1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-15 10:57:08 +01:00
Commit Graph

7991 Commits

Author SHA1 Message Date
orklah
60f0fd13bf
Merge pull request #6981 from AlessandroMinoccheri/fix-count-for-php-7-1
using lenght istead of count for php 7.1 compatibility
2021-11-23 21:40:45 +01:00
AlessandroMinoccheri
ddc13a0dba using lenght istead of count for php 7.1 compatibility 2021-11-23 21:32:55 +01:00
Paweł Tomulik
dac8c98613
attempt to fix #6973 2021-11-23 20:26:07 +01:00
orklah
b42c2814a9
Merge pull request #6971 from orklah/empty-keys
fix counting array properties when some are Never
2021-11-23 20:11:47 +01:00
orklah
9db43cdaae don't accept unresolved literal string as valid callable-strings 2021-11-23 19:54:09 +01:00
Paweł Tomulik
a7b9a241f3
attempt to fix #6937 2021-11-22 23:24:20 +01:00
orklah
eca56c0c1a
Merge pull request #6972 from orklah/unused-throws
prevent Psalm from considering throwing methods as unused just because they're immutable
2021-11-22 22:00:55 +01:00
orklah
1c1e352e5f prevent Psalm from considering throwing methods as unused just because they're immutable 2021-11-22 21:29:57 +01:00
orklah
0d47722195 fix counting array properties when some are Never 2021-11-22 21:13:25 +01:00
orklah
79fa7f5993
Merge pull request #6953 from orklah/callstatic-pure
check __callStatic purity instead of the pseudoMethod purity
2021-11-21 23:02:07 +01:00
orklah
46139272f6
Merge pull request #6952 from orklah/null_propagation_in_return
fix null propagation in return
2021-11-21 21:53:50 +01:00
orklah
3e56e859a9 fix inheritance 2021-11-21 21:53:24 +01:00
orklah
41fd460db5 check __callStatic purity instead of the pseudoMethod purity 2021-11-21 13:51:19 +01:00
orklah
6bdadfe0cb fix null propagation in return 2021-11-21 13:18:26 +01:00
Sebastian Kehr
511ed99e46 expand type aliases when comparing unions 2021-11-19 14:15:38 +01:00
Maximilian Bösing
6bf02657b6
qa: ensure array_merge has at least one argument
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2021-11-15 21:10:20 +01:00
Maximilian Bösing
765bf93444
bugfix: apply coding standard
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2021-11-15 18:36:51 +01:00
Maximilian Bösing
68abcaab5c
feature: extract class constant by wildcard detection into dedicated resolver
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2021-11-15 18:27:19 +01:00
Maximilian Bösing
743f570f66
bugfix: remove preg_quote as that will also quote wildcard
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2021-11-15 18:06:39 +01:00
Maximilian Bösing
a050ff2878
bugfix: quote regular expression
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2021-11-15 17:56:40 +01:00
Maximilian Bösing
3e1be794c4
refactor: expand test cases and optimize handling of invalid class-constant references
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2021-11-15 17:56:39 +01:00
Maximilian Bösing
c6191643ab
qa: add Reconciler::RECONCILIATION_* constants
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2021-11-15 17:56:02 +01:00
Maximilian Bösing
49624169a5
bugfix: reconcile class-constant
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2021-11-15 17:53:26 +01:00
Bruce Weirdan
608e8d11fa
Merge pull request #6922 from weirdan/cases-references 2021-11-15 11:49:47 +02:00
Bruce Weirdan
0a9154b8bb
Allow references to enum cases in class constants 2021-11-15 05:56:09 +02:00
ralila
cf5a8edf1a Ensure array offset exists 2021-11-15 04:22:14 +01:00
ralila
fe8f919495 Fix some CS issues 2021-11-15 04:00:38 +01:00
ralila
0d0a06e78f Avoid empty variable names instead of filtering them later 2021-11-15 03:00:08 +01:00
ralila
4fd87f2d77 Allow a comma as separator 2021-11-15 02:59:16 +01:00
ralila
7326f3b125 Remove useless brackets 2021-11-14 23:55:32 +01:00
ralila
659abf52d0 Fix multiple traces don’t get added to the list 2021-11-14 23:55:32 +01:00
Bruce Weirdan
45e1a1c69a
Merge pull request #6850 from gharlan/hyperlink 2021-11-14 23:20:09 +02:00
Bruce Weirdan
4cab21d903
Use snake_case property name 2021-11-14 22:55:12 +02:00
Bruce Weirdan
bc604a36c1
Do not output links with --monochrome flag on 2021-11-14 22:50:08 +02:00
Bruce Weirdan
d61e31bbaf
Merge pull request #6912 from weirdan/mbstrotolower-produces-nonlowercase-strings-sometimes 2021-11-14 21:03:24 +02:00
Bruce Weirdan
d302ffba91
Drop duplicate constant 2021-11-14 05:19:20 +02:00
Bruce Weirdan
01d07f9392
Report deprecated elements 2021-11-14 04:55:28 +02:00
Bruce Weirdan
f5b71a3a5f
Infer mb_strtolower() result as string when encoding is specified
`mb_strtolower()` may return characters we generally consider uppercase
when it's given the encoding argument. This PR makes Psalm to err on the
side of caution and treat the return type as `string` rather than
`lowercase-string` in this case

Refs vimeo/psalm#6908
2021-11-14 03:57:10 +02:00
Aaron Piotrowski
1bb204db76
Fix detecting readonly promoted property visibility 2021-11-13 12:54:15 -06:00
Aaron Piotrowski
d06510833b
Fix detection of readonly on promoted properties 2021-11-13 12:37:08 -06:00
orklah
b35b9f92a6
Merge pull request #6895 from orklah/ignore-falsable
make ignore falsable/nullable dependent on the config
2021-11-13 11:37:57 +01:00
orklah
1464e8f91e make ignore falsable/nullable dependent on the config 2021-11-13 11:37:22 +01:00
Ricardo Boss
4a58739e00
Fix typos in message about Attribute usage 2021-11-12 23:11:59 +01:00
Jonathan Vollebregt
f5d7f6c405 SimpleXMLIterator is not always truthy
Fixes #6865
2021-11-12 13:49:31 +01:00
orklah
2d0758ab10
Merge pull request #6899 from pilif/fix-6887
don't stop processing for class usage after raising an issue
2021-11-12 09:42:49 +01:00
Philip Hofstetter
ece2bccf76
don't stop processing for class usage after raising an issue
this fixes #6887
2021-11-12 09:24:39 +01:00
8d20a83ed9
Use a proper assertion 2021-11-11 12:42:16 +01:00
2bcbc2f86c
Small fix 2021-11-11 12:16:04 +01:00
575fd1c55a
Small fixes 2021-11-11 12:05:03 +01:00
9dd8533806
ImagickPixel::getColor return type provider 2021-11-11 11:54:30 +01:00
Bruce Weirdan
85f2083acb
Flag duplicate constants
Fixes vimeo/psalm#6882
Addresses p1 from vimeo/psalm#6471
2021-11-11 00:44:17 +02:00
Nadyita
6b08f1741b Fix --enable-autocomplete=false 2021-11-10 18:04:47 +01:00
Philip Hofstetter
038df9cebe
detect unevaluated inline-html code after an rearly return
this is a followup after #6876

this fixes #6877
2021-11-10 13:11:50 +01:00
Philip Hofstetter
f407ac846a
do not treat __halt_compiler() as an expression being executed
this fixes #6875
2021-11-10 12:45:12 +01:00
orklah
a193ec4573
Merge pull request #6874 from orklah/fix-never-combination
fix never combination
2021-11-09 23:18:58 +01:00
orklah
830c898fec
Merge pull request #6872 from orklah/InvalidDocblockPromotedProperties
allow signature type for promoted property as well as property docblock
2021-11-09 23:17:43 +01:00
orklah
8d22676627 fix errors 2021-11-09 22:31:40 +01:00
orklah
21591b0f2a fix errors 2021-11-09 21:14:55 +01:00
orklah
db05dfeb4c fix never combination 2021-11-09 20:59:49 +01:00
orklah
d409c063f3 allow signature type for promoted property as well as property docblock (that will be used for param as well) 2021-11-09 19:38:18 +01:00
Thomas Bley
ca2fe166ee Added option to forbid eval() in codebase #6855 2021-11-07 21:06:22 +01:00
Bruce Weirdan
756be3b80c
Merge pull request #6843 from weirdan/enums-as-attributes 2021-11-07 17:53:19 +02:00
Bruce Weirdan
17ef25acd8
Merge pull request #6845 from sasezaki/cs_SelfMemberReference 2021-11-07 17:41:45 +02:00
orklah
4e6cb75094
Merge pull request #6848 from orklah/taint-comments
Taint comments
2021-11-07 15:55:37 +01:00
Gregor Harlan
ab0049d0ff
ConsoleReport: Add links to open file in editor 2021-11-07 15:04:14 +01:00
orklah
3322801903 ignore comments after taint-sink 2021-11-07 10:17:25 +01:00
sasezaki
5a01c8d601 Added phpcs SelfMemberReference rule, and applied 2021-11-07 15:47:39 +09:00
Bruce Weirdan
68495be147
Forbid declaring enums as attributes
This is in line with current Psalm behavior. We forbid non-instantiable
classlikes as attributes, including abstract classes and classes with
non-public constructors.

Refs vimeo/psalm#6841
2021-11-07 01:47:11 +02:00
Bruce Weirdan
9210bbcdd4
Forbid enum instantiation
Fixes vimeo/psalm#6837
2021-11-07 00:14:37 +02:00
orklah
b08d39e567
Merge pull request #6834 from orklah/unused-in-assert
don't consider calls to methods with assertions as Unused
2021-11-06 22:05:34 +01:00
orklah
e28659eb6c
Merge pull request #6838 from orklah/value_and_name_enum
better understands value and name properties for enum
2021-11-06 22:05:04 +01:00
orklah
18677bb108 better understands value and name properties for enum 2021-11-06 21:49:42 +01:00
Bruce Weirdan
0f8ef45110
Forbid properties on enums
Fixes vimeo/psalm#6472
2021-11-06 21:57:49 +02:00
orklah
9c9669ea44 don't consider calls to methods with assertions as Unused 2021-11-06 19:54:17 +01:00
orklah
aca8e12bf9
Merge pull request #6830 from orklah/isContainedBy
Mixed contain every types and Never is contained in every type
2021-11-05 22:05:32 +01:00
orklah
f4dcea3e57
Merge pull request #6829 from orklah/isType
only return true in Union::is*Type* if there is a single type
2021-11-05 22:05:17 +01:00
orklah
de9ad68ad0 Mixed contain every types and Never is contained in every type 2021-11-05 21:25:23 +01:00
orklah
728175f82d only return true in Union::is*Type* if there is a single type 2021-11-05 21:14:04 +01:00
orklah
ad57516765 create a temporary var for coalescing ternaries 2021-11-05 20:07:35 +01:00
orklah
b7834689e5
Merge pull request #6824 from orklah/session
Makes $_SESSION possibly undefined at the source
2021-11-05 20:07:24 +01:00
orklah
33aab6cc40 allow declaring functions and classLikes after a never-returning call 2021-11-05 18:09:40 +01:00
orklah
6e5f3db06c makes $_SESSION possibly undefined 2021-11-04 22:45:46 +01:00
orklah
fffef80ec1 makes $_SESSION possibly undefined 2021-11-04 22:38:31 +01:00
orklah
915278e253
Merge pull request #6823 from orklah/variable_class
allow assertion to work on $var::class
2021-11-04 20:54:59 +01:00
orklah
834d831915 allow assertion to work on $var::class 2021-11-04 20:44:42 +01:00
orklah
5282e4728b allow assertion to work on $var::class 2021-11-04 20:33:30 +01:00
orklah
cd74f665dc
Merge pull request #6813 from orklah/intTaint
don't register taints for numeric variables
2021-11-04 15:30:52 +01:00
orklah
e6dccaa07c
Merge pull request #6809 from orklah/binaryOpTaint
don't taint the result of most binary operations
2021-11-04 13:18:07 +01:00
orklah
bf993452a8
Merge pull request #6810 from orklah/castArrayTaints
Array cast pass taints
2021-11-04 13:17:20 +01:00
orklah
c2b14e2f39
Merge pull request #6812 from orklah/shell_exec_taint
backticks shell_exec taint
2021-11-04 13:16:53 +01:00
Bruce Weirdan
6610a2f918
Improve Github Actions output
* Use issue type in title
* Also provide issue type and location in the (use-visible) error message

Fixes vimeo/psalm#6817
2021-11-04 03:03:25 +02:00
orklah
3503f198a6 add deprecated tags to the array 2021-11-04 00:39:09 +01:00
orklah
6e49c61fd0 fix comment 2021-11-04 00:31:22 +01:00
orklah
9fb74a4f28 exclude Plus on arrays too 2021-11-04 00:30:09 +01:00
orklah
3b01713257 don't taint the result of most binary operations 2021-11-04 00:30:09 +01:00
orklah
24137bdbad Array cast pass taints 2021-11-04 00:29:36 +01:00
orklah
eca530d792 don't register taints for numeric variables 2021-11-04 00:29:07 +01:00
orklah
ff83c498a7 fix CS 2021-11-04 00:28:40 +01:00
orklah
fbe305e5bb detect taint in backticks 2021-11-04 00:28:40 +01:00
Alexander Wühr
2d91b90690
Add pcntl_alarm to the list of impure functions 2021-11-03 10:16:10 +01:00
sasezaki
e3c6464a91 accept ::class constant strings for literal argument 2021-11-03 13:44:14 +09:00
Bruce Weirdan
0cdb0dc04a
Merge pull request #6768 from zoonru/psalm-self-out-templates 2021-11-02 21:41:16 +02:00
orklah
96ae8e7600
Merge pull request #6793 from orklah/unevaluatedCode
emit UnevaluatedCode after exit or never returning functionlike
2021-11-01 23:41:36 +01:00
orklah
68a4f9e930 emit UnevaluatedCode after exit or never returning functionlike 2021-11-01 22:13:29 +01:00
Bruce Weirdan
81ca05f3ab
Merge pull request #6790 from orklah/fix_yield 2021-11-01 20:25:54 +02:00
orklah
af129f8851 detect yield in new 2021-11-01 19:04:37 +01:00
Bruce Weirdan
ac098a52da
Allow to forbid exit() and die() 2021-10-31 03:02:16 +03:00
Alexey Borzov
91ec5712ad Add a means to switch return types based on PHP_VERSION_ID
As suggested in vimeo/psalm#6755
2021-10-29 22:19:38 +03:00
Bruce Weirdan
8c33b21261
Merge pull request #6776 from orklah/double-autoload-call 2021-10-29 11:25:14 +03:00
orklah
61a7cbe9c5
Merge pull request #6764 from orklah/promoted-property-docblock
allow documenting promoted properties with @var
2021-10-28 22:19:42 +02:00
orklah
67a3f3cd5c fix spacing 2021-10-28 22:11:30 +02:00
orklah
d330b340d2 try without second call 2021-10-28 22:07:50 +02:00
orklah
067f8375cf replace exception by InvalidDocblock 2021-10-28 22:05:43 +02:00
orklah
9823e87b80
Merge pull request #6774 from orklah/reconcileFalsyOrEmpty
fix local variable defined too early
2021-10-28 21:47:17 +02:00
orklah
b9effdb28a
Merge pull request #6742 from zoonru/fix_fewer_template_parameters
Fix template parameter collection for child classes with fewer parameters (fixes #6734)
2021-10-28 20:06:11 +02:00
orklah
a7c44a1a19 fix local variable defined too early 2021-10-28 19:33:27 +02:00
597487c4c9
Assert that $lhs_var_id is defined 2021-10-28 10:50:43 +02:00
5fae548e62
Add template support to @psalm-self-out 2021-10-28 10:44:37 +02:00
orklah
e17ca1ba10 fix CS/test 2021-10-27 22:45:16 +02:00
orklah
9b7eabe17f allow documenting promoted properties with @var 2021-10-27 22:35:21 +02:00
orklah
4783149773 deprecate TEmpty 2021-10-27 21:26:31 +02:00
9c59550e15
Fully fix recursive template parameter resolution 2021-10-27 10:58:33 +02:00
orklah
dc2ac427ca Don't remove a type because they have a common parent 2021-10-26 22:54:55 +02:00
orklah
6fba5eb554
Merge pull request #6738 from orklah/generator_and_iterator
don't use is_a with user classes
2021-10-26 19:28:17 +02:00
orklah
70175d8fd2
Merge pull request #6744 from orklah/dont_assert_mixed
Don't assert mixed type
2021-10-26 19:23:13 +02:00
orklah
e8e2624c5f Don't assert mixed type 2021-10-26 19:12:13 +02:00
c0e6f93deb
Fix template parameter collection for child classes with fewer parameters 2021-10-26 13:06:45 +02:00
Bruce Weirdan
4b0c8806a7
Merge pull request #6739 from orklah/instanceof_notliteral 2021-10-25 23:45:17 +03:00
orklah
caf9602cb8 don't emit redundant error when checking a named type against itself 2021-10-25 19:02:07 +02:00
orklah
86a9e5c13a fix CS 2021-10-25 18:29:44 +02:00
orklah
dcd3601645 don't use is_a with user classes 2021-10-25 18:29:09 +02:00
orklah
9fb959150a
Merge pull request #6730 from orklah/int-template-arithmetics
don't emit issues when doing arithmetics on int templates
2021-10-24 20:39:54 +02:00
orklah
0161dedcdb fix 2021-10-24 19:53:22 +02:00
orklah
2c5cec4a05 fix 2021-10-24 19:48:28 +02:00
orklah
af918a95a2 don't emit issues when doing arithmetics on int templates 2021-10-24 19:30:39 +02:00
orklah
d99f300043 fix concat 2021-10-24 19:15:18 +02:00
orklah
90d6239d74 strlen of strtolower of string is not always true 2021-10-24 18:40:13 +02:00
orklah
e33492398b
Merge pull request #6726 from orklah/crash_intrange
Don't crash on falsy with int ranges
2021-10-24 14:29:22 +02:00
orklah
c38139a87c Don't crash on falsy with int ranges 2021-10-24 13:59:21 +02:00
orklah
68528985d6
Merge pull request #6724 from orklah/impure_callstatic
flag impure calls made through __callstatic
2021-10-24 10:30:56 +02:00
orklah
a0681a4498 flag impure calls made through __callstatic 2021-10-24 09:55:40 +02:00
orklah
0339815070 fix type leaking when using ternaries 2021-10-23 18:58:05 +02:00
orklah
307635fca5
Merge pull request #6721 from orklah/ftp_pasv
ftp_pasv is impure
2021-10-23 15:23:37 +02:00
orklah
fbd861c01e ftp_pasv is impure 2021-10-23 15:17:49 +02:00
orklah
b63d877f48
Merge pull request #6720 from orklah/loop-template-regression
Don't refine empty/falsy assertions on templates inside loops
2021-10-23 14:31:10 +02:00
orklah
78a4c78187
Merge pull request #6718 from orklah/5651
fix literal string access on a non empty array
2021-10-23 12:11:39 +02:00
orklah
fb5a652e18 Don't refine empty/falsy assertions on templates inside loops 2021-10-23 11:17:47 +02:00
orklah
2cc5c555c2 fix literal string access on a non empty array 2021-10-22 18:17:08 +02:00
orklah
7bb37af1e5
Merge pull request #6714 from orklah/emptyorfalsy
More refactoring around Empty/falsy reconciliation
2021-10-21 23:40:01 +02:00
orklah
2d90631c87
Merge pull request #6689 from orklah/traversable&array
only fuse array & Traversable with phpstorm generics
2021-10-21 22:38:59 +02:00
orklah
1b9f84970d
Merge pull request #6716 from orklah/fatal
fix Uncaught ValueError: strrpos()
2021-10-21 21:36:53 +02:00
orklah
fdd20b8698 fix Uncaught ValueError: strrpos(): Argument #3 ($offset) must be contained in argument #1 ($haystack) in /var/www/html/vendor/vimeo/psalm/src/Psalm/CodeLocation.php:301 2021-10-21 21:27:38 +02:00
orklah
1c0b802abb fix regression 2021-10-21 21:10:12 +02:00
orklah
b43fd0037f fix CS 2021-10-21 19:14:38 +02:00
orklah
513ae016f9 consistency 2021-10-21 19:14:38 +02:00
orklah
5f17ea9b63 improve empty/falsy 2021-10-21 19:14:36 +02:00
orklah
4b0e3d0c06 improve empty/falsy 2021-10-21 19:14:02 +02:00
orklah
31bbd5a967
Merge pull request #6707 from orklah/!falsy_on_empty-string
improve falsy on non-empty-string
2021-10-20 23:18:12 +02:00
orklah
7ce0c3a6e3 improve falsy on non-empty-string 2021-10-20 22:31:03 +02:00
orklah
1f02795e42 fix missing implicit __toString 2021-10-20 19:54:32 +02:00
orklah
cf8e443d10 use better issue types 2021-10-20 07:32:08 +02:00
orklah
4755131585 more consistency 2021-10-20 07:32:04 +02:00
orklah
3866c6b529 new truthy type 2021-10-20 07:31:11 +02:00
orklah
8bcdd6e339 new truthy type 2021-10-20 07:31:11 +02:00
orklah
f5b4cb664c new falsy type 2021-10-20 07:31:11 +02:00
orklah
1d59d2cd00 more consistency 2021-10-20 07:31:11 +02:00
orklah
9b8e483a4c improve empty/falsy reconciliation 2021-10-20 07:31:11 +02:00
orklah
23a9896eda
Merge pull request #6693 from orklah/clauses
Remove hasPossiblyNumericType
2021-10-20 07:08:25 +02:00
orklah
c7ea446405 remove unused function 2021-10-19 22:20:10 +02:00
orklah
dc0b2074a4 test without weird function 2021-10-19 22:12:20 +02:00
orklah
37f1f87052
Merge pull request #6690 from orklah/simplexmliterator
add SimpleXMLIterator to universalObjectCrates
2021-10-19 18:36:02 +02:00
orklah
1288d49130 add SimpleXMLIterator to universalObjectCrates 2021-10-18 21:59:17 +02:00
orklah
ec59876935 only fuse array & Traversable with phpstorm generics 2021-10-18 21:27:11 +02:00
orklah
f7a63361ad
Merge pull request #6679 from SCIF/bugfix-5694-arrayfilter
Improve handling of positive ints by array_filter()
2021-10-17 23:20:26 +02:00
Aleksandr Zhuravlev
b664850cdc Added support of asserting properties of objects out of scope 2021-10-17 21:29:25 +13:00
Aleksandr Zhuravlev
978d9ec774 Improve handling of positive ints by array_filter() 2021-10-16 20:47:22 +13:00
orklah
7a47ebfcd6 fix 2021-10-16 00:26:00 +02:00
orklah
56c73142d6 don't emit InvalidReturnType when return type was inferred to never 2021-10-16 00:15:17 +02:00
orklah
1aad830392
Merge pull request #6654 from zoonru/fixes
Fix manipulation of intersection types, arrow functions, foreign static types, parameter static types, T|false|null unions.
2021-10-15 23:41:24 +02:00
Bruce Weirdan
c556920352
Revert "Merge remote-tracking branch 'upstream/master' into test5"
This reverts commit 043a0262f7, reversing
changes made to cc4c29837d.
2021-10-16 00:20:38 +03:00
orklah
043a0262f7 Merge remote-tracking branch 'upstream/master' into test5 2021-10-15 22:37:07 +02:00
orklah
99d8f92e4f what would that do? 2021-10-15 22:33:04 +02:00
orklah
b8a2ba251f
Merge pull request #6672 from orklah/phpstorm-generics
prevent phpstorm generics from touching to signature types
2021-10-14 21:25:36 +02:00
orklah
8a770a1003 fix CS 2021-10-14 21:09:30 +02:00
orklah
a1b1080c4e prevent phpstorm generics from touching to signature types 2021-10-14 21:04:53 +02:00
orklah
110f2b4822
Merge pull request #6658 from fluffycondor/method-annotation-parsing-fix
Fix @psalm-method annotation parsing
2021-10-14 17:36:42 +02:00
orklah
859966defe
Merge pull request #6669 from orklah/8.1-2
allow Psalm to choose PHP8.1 if it's the lower PHP version allowed
2021-10-14 17:35:46 +02:00
orklah
ef7e6cdf01 allow Psalm to choose PHP8.1 if it's the lower PHP version allowed 2021-10-14 16:54:27 +02:00
Semyon
0f6acacf31 Make psalm- prefix optional on @psalm-method annotation 2021-10-14 17:07:00 +03:00
244a90ca4f
Fix #6665 2021-10-14 10:56:54 +02:00
orklah
75c3f8716a
Merge pull request #6652 from orklah/is_a_stub
stub for is_a
2021-10-14 00:13:13 +02:00
orklah
64df00baba
Merge pull request #6660 from orklah/cleanup4
Code trimming
2021-10-14 00:12:21 +02:00
orklah
ae193ca4da replace elvis operator by coalesce operator when applicable 2021-10-13 20:16:06 +02:00
orklah
dbc6f503b1 use of strtolower only once 2021-10-13 20:16:06 +02:00
Semyon
531aafc0c6 Add one more check is anything captured, it doesn't look like -1 actually expects 2021-10-13 18:06:10 +03:00
Semyon
a109d1ab27 Code style 2021-10-13 17:49:42 +03:00
Semyon
89f72dd9e9 Add check is anything captured 2021-10-13 17:32:40 +03:00
Semyon
a8d34c00cd Fix psalm-method annotation parsing 2021-10-13 17:20:36 +03:00
orklah
e17290a9bc
Merge pull request #6613 from orklah/string-unpacking
String unpacking
2021-10-13 15:18:11 +02:00
orklah
91c3d788f6
Merge pull request #6656 from orklah/setAttribute
use Attribute feature of PHP-Parser to avoid dealing with dynamic properties
2021-10-13 14:46:22 +02:00
24f1b60e53
Fix nullable unions 2021-10-13 14:05:48 +02:00
orklah
bee5b69f7f use Attribute feature of PHP-Parser to avoid dealing with dynamic properties 2021-10-13 13:27:56 +02:00
a9ba848503
Fix 2021-10-13 11:38:42 +02:00
ce60fa2151
Cleanup 2021-10-13 11:26:01 +02:00
orklah
9bb731182a reintroduce errors for older versions 2021-10-13 11:22:40 +02:00
orklah
6e7aafe9b8 better behaviour in SimpleTypeInferer 2021-10-13 11:22:40 +02:00
orklah
66bbcc212c remove unneeded argument 2021-10-13 11:22:40 +02:00
orklah
690c24f824 array unpacking with strings 2021-10-13 11:22:40 +02:00
b6e7201b5a
Forbid static in parameter typehint 2021-10-13 11:22:33 +02:00
1c99af205b
Fix manipulation of intersection types, arrow functions, foreign static types, T|false|null unions. 2021-10-13 11:13:43 +02:00
1574751aef
Fix docblock manipulator for arrow closures 2021-10-13 10:23:06 +02:00
1cca3c0546
Hotfix 2021-10-13 10:23:06 +02:00
orklah
e7cd2eac0a
Merge pull request #6641 from orklah/weird-assertion-count
Union::getAssertionString with multiple types
2021-10-13 08:15:28 +02:00
orklah
78c4d9def7 fix 2021-10-12 22:16:35 +02:00
orklah
1efe272aed stub for is_a 2021-10-12 22:12:51 +02:00
orklah
233fe11d12 SimpleXMLElement is not always truthy 2021-10-12 15:46:02 +02:00
orklah
c6fb81007c
Merge pull request #6629 from orklah/loops-tweaking
tweaking with loops
2021-10-11 20:45:54 +02:00
orklah
af414ffe59
Merge pull request #6642 from orklah/inside-conditional
Inside conditional
2021-10-11 20:45:14 +02:00
orklah
911076939c
Merge pull request #6628 from orklah/phpparser2
Php-Parser 4.13
2021-10-11 20:42:32 +02:00
orklah
b54dddf484
Merge pull request #6643 from orklah/never-closure
infer never on closures(and more?)
2021-10-11 20:42:02 +02:00
orklah
21456b85b1 add Never for throws. Add Never only if at top level 2021-10-11 19:35:18 +02:00
orklah
f9377c53fc infer never on closures(and more?) 2021-10-11 18:52:26 +02:00
orklah
c4ebc34695 suppress or use the return type 2021-10-11 17:27:52 +02:00
orklah
9e7d3a4cd6 sets the inside_conditional flag after creating another context from it 2021-10-11 16:38:39 +02:00
orklah
4bcce010e4 loose comparison between int/float and string result in numeric-string 2021-10-11 16:11:05 +02:00
orklah
d08845900b
Merge pull request #6639 from orklah/refine-TKeyedArray-with-iterable
Refine TKeyedArray with iterable
2021-10-11 16:09:00 +02:00
orklah
2e64854a6c don't allow getAssertionString to return a part of the Union 2021-10-11 16:07:57 +02:00
orklah
abebe4f7b4 add comments and suppress ComplexMethod 2021-10-11 13:36:56 +02:00
orklah
12a53345b5 allow filtering TKeyedArray using an iterable 2021-10-11 13:36:29 +02:00
orklah
3aee938910
Merge pull request #6636 from orklah/possibly-undefined-satisfy-nullable
Allow sending possibly_undefined inputs to optional params
2021-10-10 23:12:38 +02:00
orklah
cc82e6cf41 suppress warning 2021-10-10 13:58:09 +02:00
orklah
1b24b0309c reduce complexity 2021-10-10 13:52:14 +02:00
orklah
69d412bfcb fix error message when input is possibly undefined 2021-10-10 13:42:28 +02:00
orklah
fb8b07613d Allow sending possibly_undefined inputs to optional params 2021-10-10 12:44:04 +02:00
orklah
5134a92e2a
Merge pull request #6623 from orklah/templated-array-key
Templated array key
2021-10-10 10:43:12 +02:00
orklah
f159ca76de
Merge pull request #6624 from orklah/float-always-float
invert the meaning of the errors
2021-10-10 10:42:37 +02:00
orklah
d5eb471688 every condition must be true 2021-10-10 10:27:22 +02:00
orklah
85668ed255 Add support for infinite for loops 2021-10-10 10:22:41 +02:00
orklah
39b85f574b revert back wrong change 2021-10-10 10:06:37 +02:00
orklah
70bfce769c revert back wrong change 2021-10-10 10:00:44 +02:00
orklah
da4a0fe9a9 return null when expression can't be stored as unresolved 2021-10-10 09:28:19 +02:00
orklah
e7a86148b0 Allow Psalm to store unresolved Unary Ops 2021-10-10 09:24:25 +02:00
orklah
df34daee52 more consistency 2021-10-10 00:51:47 +02:00
orklah
7c99878f58 tweaking with loops 2021-10-10 00:21:15 +02:00
orklah
ded92ef83c forbid intersection types for now 2021-10-09 23:48:32 +02:00
orklah
870ee4ff93 ->args to ->getArgs 2021-10-09 23:37:04 +02:00
orklah
bac0217890 add "!" to invert the meaning of the errors 2021-10-09 21:15:27 +02:00
orklah
2b963242d7 array-key is included is contained by a template with array-key as upper bound 2021-10-09 20:02:09 +02:00
orklah
f62c76a334
Merge pull request #6622 from orklah/return_0
fix @return 0
2021-10-09 18:25:46 +02:00
orklah
a1df08f718 fix an old test 2021-10-09 18:18:15 +02:00
orklah
d44d00fb6d fix two more cases 2021-10-09 18:10:49 +02:00
orklah
a2f415e2e0 fix @return 0 2021-10-09 17:58:06 +02:00
orklah
950b21d10a
Merge pull request #6621 from orklah/incompatible-types-found-for-T
add a little details to the Incompatible types found for T error
2021-10-09 15:10:27 +02:00
orklah
b1f20dffa0 fix brackets 2021-10-09 15:02:49 +02:00
orklah
e9f3e8795f add a little details to the Incompatible types found for T error 2021-10-09 15:01:13 +02:00
orklah
49abfcb71b
Merge pull request #6617 from orklah/nonspecific-literal-int
allow any integer range to be satisfied by TNonspecificLiteralInt
2021-10-09 01:12:46 +02:00
orklah
874a67a1b0 allow any integer range to be satisfied by TNonspecificLiteralInt 2021-10-09 01:04:31 +02:00
orklah
d40335ff37
Merge pull request #6612 from orklah/empty-array_is_list
array_is_list on empty array returns true
2021-10-08 17:16:35 +02:00
orklah
682784c886 array_is_list on empty array returns true 2021-10-08 17:05:35 +02:00
orklah
f35df421e2
Merge pull request #6604 from orklah/array-unshift-on-empty-array
Array unshift on empty array
2021-10-07 23:04:10 +02:00
orklah
87a5df6043 only put offset to 0 when there's only one argument 2021-10-07 20:38:10 +02:00
orklah
49bb065dc7
Merge pull request #6608 from orklah/foreach-on-list
foreach on list gives a positive|0 offset
2021-10-07 20:16:11 +02:00
orklah
3fc716ec3b fix CS 2021-10-07 19:39:45 +02:00
orklah
a7c4f0052b foreach on list gives a positive|0 offset 2021-10-07 19:32:25 +02:00
orklah
973da0a91a allow considering a NonEmptyArray where the only offset value is 0 to be contained in a NonEmptyList 2021-10-07 11:04:46 +02:00
orklah
3a2eddf2d7 pass the method_id to be able to set the new offset type to 0 for array_unshift 2021-10-07 09:46:49 +02:00
orklah
6627055f3b make TypeCombiner override empty-array 2021-10-07 09:46:17 +02:00
orklah
4ca171001c
Merge pull request #6598 from orklah/fix-error
fix error
2021-10-05 20:50:47 +02:00
orklah
ad6229fe67 fix error 2021-10-05 20:27:13 +02:00
orklah
77c70c0ad2 allow |false in unions as long as it's not alone and not with null 2021-10-05 19:49:05 +02:00
orklah
433474260c revert confusing change 2021-10-05 19:27:07 +02:00
orklah
7321eed89d don't add return type if it's the same than signature unless there is a description 2021-10-05 13:41:20 +02:00
orklah
902206b3ee
Merge pull request #6578 from orklah/psalter-psalm-param
Psalter psalm-param
2021-10-05 12:51:52 +02:00
orklah
295622088f
Merge pull request #6585 from orklah/truthy
fix isAlwaysTruthy: TNonEmptyString can be falsy (with '0')
2021-10-05 12:49:09 +02:00
orklah
96ed2526e8
Merge pull request #6589 from orklah/strict-callable
Better understanding of Templates in lhs of callable TKeyedArray
2021-10-05 12:48:53 +02:00
orklah
3cf5dc5e89 makes Psalm understand templates in lhs 2021-10-05 11:34:17 +02:00
orklah
12ecaaa84d makes Psalm understand templates in lhs 2021-10-05 11:30:29 +02:00
orklah
20bb5f196b fix isAlwaysTruthy: TNonEmptyString can be falsy (with '0') 2021-10-04 23:02:01 +02:00
orklah
d22105de72
Merge pull request #6580 from orklah/psalter-generic-object-tophpstring
fix wrong type description added in signature
2021-10-04 20:23:42 +02:00
orklah
c7fd665fba
Merge pull request #6576 from orklah/wrong_priority
fix wrong operator priority
2021-10-04 14:36:47 +02:00
orklah
2c728546e4
Merge pull request #6485 from orklah/list-assert
assert that some type is a list
2021-10-04 13:31:34 +02:00
orklah
ac6a75ea7f
Merge pull request #6473 from orklah/double-assert2
assert both sides of an equality
2021-10-04 13:30:38 +02:00
orklah
0e83afdb86
Merge pull request #6518 from orklah/fix-truthy
improvements of alwaysTruthy/alwaysFalsy
2021-10-04 13:29:49 +02:00
orklah
b0842c6b6f
Merge pull request #6475 from orklah/range6
3> min/max, rand inference improvement with integer range
2021-10-04 13:23:03 +02:00
orklah
66206bf061 fix wrong type description added in signature 2021-10-04 12:26:05 +02:00
orklah
8b07e69645
Merge pull request #6514 from zoonru/if-this-is
Add if-this-is
2021-10-04 09:49:26 +02:00
orklah
8660f68007
Merge pull request #6519 from gmessier/advanced-issue-handlers
Add support for advanced IssueHandler in plugins
2021-10-04 09:47:59 +02:00
orklah
942b3b619b
Merge pull request #6522 from MorrisJobke/fix/show-file-and-line-in-exception-message
Show file and line in case of an exception in a forked worker
2021-10-04 09:19:38 +02:00
orklah
aba9541451 Psalter add psalm-param modifying 2021-10-04 01:01:57 +02:00
orklah
1e70be9888 fix wrong operator priority 2021-10-04 00:24:58 +02:00
orklah
430fd619ec cleanup 2021-10-04 00:23:53 +02:00
orklah
53c0a4e63a cleanup 2021-10-04 00:03:06 +02:00
orklah
5efd49f38d fix redundant condition 2021-10-02 10:09:40 +02:00
orklah
d3bc179abd cover the case where the call to the function is namespaced but the function doesn't exists in the namespace 2021-10-02 10:02:24 +02:00
orklah
e0b2cb5028 consistency 2021-10-02 10:02:24 +02:00
orklah
0b8681c8bf check namespace before adding assertions 2021-10-02 10:02:24 +02:00
orklah
fa9990ae55 fix wrong method name 2021-10-02 10:02:24 +02:00
orklah
e02eec932e refactor Assertions for is_ functions 2021-10-02 10:02:24 +02:00
orklah
f641d9e95a assert that some type is a list 2021-10-02 10:02:22 +02:00
orklah
b14fccb654 refine types in Always methods 2021-10-02 10:01:05 +02:00
orklah
2df1f9d42e add resource to truthy types 2021-10-02 10:01:05 +02:00
orklah
f8628ef68c fix errors 2021-10-02 10:01:05 +02:00
orklah
0f6d271dde possibly undefined unions can't be truthy 2021-10-02 10:01:05 +02:00
orklah
b9e65f066a refactor paradoxical conditions 2021-10-02 10:01:04 +02:00
orklah
85f16e9710 handle the case where analysis failed 2021-10-02 10:01:04 +02:00
orklah
597e9a99d7 Makes BooleanNot smarter 2021-10-02 10:01:04 +02:00
orklah
dd5c2904d8 fix error on continue 2021-10-02 10:01:04 +02:00
orklah
f8c2a89f23 use Int ranges to describe offset after array_fill when both args are known ints 2021-10-02 09:54:02 +02:00
orklah
b9f14f8687 improve min/max inference, add a return type provider for rand, mt_rand and random_int 2021-10-02 09:53:58 +02:00
orklah
7e1c66d837 add limit to the number of clauses simplifyCNF can handle 2021-10-02 09:52:19 +02:00
orklah
7f0d25374f add comment 2021-10-02 09:52:19 +02:00
orklah
83ad836e88 assert both sides of an equality 2021-10-02 09:52:19 +02:00
Bruce Weirdan
2e7e343ef8
Merge pull request #6423 from orklah/count-equal-0-negated-assertion 2021-10-02 00:53:03 +03:00
Bruce Weirdan
97a3d673f4
Merge pull request #5091 from ohader/namespace-resolver 2021-10-01 02:00:33 +03:00
Bruce Weirdan
377d3bddf0
Merge pull request #6552 from orklah/manipulator 2021-09-30 21:54:55 +03:00
Bruce Weirdan
d232cc0d02
Merge pull request #6553 from orklah/exec-leak 2021-09-30 21:32:55 +03:00
NikolayZhebet
843f14d069 fix 'Undefined offset: 1' in CodeBase::getTypeContextAtPosition issue (#6559) 2021-09-30 20:09:15 +03:00
orklah
02ef33c4ac
Merge pull request #6554 from simPod/use-a
Use correct English articles
2021-09-30 09:37:56 +02:00
Simon Podlipsky
4f5e30fd30
Use correct English articles 2021-09-30 09:19:08 +02:00
orklah
3133cd159a fix NPE 2021-09-29 22:30:38 +02:00
orklah
2a2e7c5e32 prevent object leaking that lead to changes in callmap 2021-09-29 22:27:34 +02:00
orklah
5a99c9be94 offset the starting position of the function in case of attributes 2021-09-29 21:19:04 +02:00
Oliver Hader
51333e8f6e
[TASK] Resolve namespace of class related AST statements
This change allows using `Class_` namespaces like in
PhpParser's original `NameResolver` implementation.

```
if ($node instanceof \PhpParser\Node\Stmt\Class_) {
    $fqcn = (string)($node->namespacedName ?? $node->name);
    $extents = (string)($node->extends->getAttribute('resolvedName'));
}
```

Corresponding parts have been duplicated and modified from
https://github.com/nikic/PHP-Parser/blob/v4.10.4/lib/PhpParser/NodeVisitor/NameResolver.php#L69-L81
2021-09-27 11:19:24 +02:00
orklah
ab6efe49b2 fix CS 2021-09-26 23:41:26 +02:00
orklah
38dac34846 unnecessary null initialization 2021-09-26 23:34:32 +02:00
orklah
db395d5605 unnecessary cast 2021-09-26 23:34:32 +02:00
orklah
5d6d3df4cf unnecessary identical child method 2021-09-26 23:34:32 +02:00
orklah
4577a11a2f imports 2021-09-26 23:34:32 +02:00
orklah
c91bdfb689 old casts 2021-09-26 23:34:32 +02:00
orklah
9170b0af8f replace list() 2021-09-26 23:34:32 +02:00
orklah
2315316b17 return types 2021-09-26 23:34:32 +02:00
orklah
72eab30a3a coalesce operator 2021-09-26 23:34:31 +02:00
orklah
f788fec540 static::class 2021-09-26 23:34:31 +02:00
orklah
46801c4b98 clearer string operations 2021-09-26 23:34:31 +02:00
orklah
18b0c63de2 shorter operations 2021-09-26 22:44:33 +02:00
orklah
a95cb15056 no need for parent 2021-09-26 22:39:37 +02:00
orklah
53e4719c19 boolean cast 2021-09-26 22:39:01 +02:00
orklah
ddf74919f6 if with common parts 2021-09-26 22:37:17 +02:00
orklah
c11b32d414 redundant variable check 2021-09-26 22:37:17 +02:00
orklah
998f91aa65 variable with single value 2021-09-26 22:37:17 +02:00
orklah
a85cba3973 dead code 2021-09-26 22:37:17 +02:00
orklah
ae1afd90c6 coalesce operator 2021-09-26 22:37:17 +02:00
orklah
dae29c8cee missing visibility 2021-09-26 22:37:17 +02:00
orklah
6dd1e19254 unnecessary ref 2021-09-26 22:37:17 +02:00
orklah
a5aa824258 unnecessary local variable 2021-09-26 22:37:17 +02:00
orklah
be8406294c unnecessary return 2021-09-26 22:37:16 +02:00
orklah
5777d02fed missing types 2021-09-26 22:37:16 +02:00
orklah
5b684309fd unnecessary ternary 2021-09-26 22:37:16 +02:00
orklah
c45e9bfc5f useless switch 2021-09-26 22:37:16 +02:00
orklah
fce60a018a param defaults 2021-09-26 22:37:16 +02:00