Brown
ec64ae930a
Fix a couple of false-positive redundant conditions
2021-01-29 11:39:38 +01:00
Brown
1b10f11217
Fix tests
2021-01-29 11:39:38 +01:00
Brown
ff2c18aa67
Fix #4208 - array with possibly-undefined keys isn‘t really sealed
2021-01-29 11:39:38 +01:00
Brown
e7333ec4db
Fix #4209 - allow hinting arrow function return type
2021-01-29 11:39:38 +01:00
Brown
1b6ecfc128
Fix #4210 - fix __invoke declaration tracing
2021-01-29 11:39:38 +01:00
Brown
7e534d14d0
Improve accuracy of array_filter
2021-01-29 11:39:37 +01:00
Brown
f8e7b649c7
Improve array_merge return type
2021-01-29 11:39:37 +01:00
Brown
95cc274192
Support more array intersections in type parsing
2021-01-29 11:39:37 +01:00
Brown
376a825161
Fix regression – detect unused params with defaults again
2021-01-29 11:39:37 +01:00
Brown
5e6b158dd9
Do no writing when saving parser cache in tests
2021-01-29 11:39:36 +01:00
Brown
270f9de20a
Fix a few more things
2021-01-29 11:39:36 +01:00
Brown
e9fb3dcad2
Fix various things
2021-01-29 11:39:36 +01:00
Brown
d53a9313a5
Fix stub test
2021-01-29 11:39:36 +01:00
Brown
0b66e8897c
Add check for strpos dictionaries
...
Ref #4070
2021-01-29 11:39:36 +01:00
Brown
db55f608be
Fix #4122 - detect yield in function arguments
2021-01-29 11:39:36 +01:00
Brown
168972e91a
Fix #4178 - always detect missing property types
2021-01-29 11:39:36 +01:00
Bruce Weirdan
b27a233cdd
Support multiple issue types in @psalm-suppress
( #4179 )
...
* Accept multiple issue names in `@psalm-suppress`
Fixes vimeo/psalm#1575
* Accept multiple issue types on statement docblocks as well
* Proper highlighting of individual issues in compound suppressions
2021-01-29 11:39:36 +01:00
Bruce Weirdan
4319132057
Added @psalm-stub-override
for classlikes and methods ( #4177 )
...
Fixes vimeo/psalm#1252
2021-01-29 11:39:34 +01:00
orklah
865b36cd3d
replace return;
by return null;
in every non-void method, add return null;
when mising, add return types, remove redundant phpdoc ( #4176 )
2021-01-29 11:38:58 +01:00
Brown
29481ed1bd
Fix #4127 - improve error message for unused closure var
2021-01-29 11:38:58 +01:00
ygottschalk
c361f86c68
added array-size max constraint to greater check ( #4175 )
...
added a few unit tests
2021-01-29 11:38:58 +01:00
Brown
5d04368d98
Fix #4169 - add appropriate bounds check
2021-01-29 11:38:57 +01:00
orklah
db45ff1ba4
More return types ( #4173 )
...
* add native return types
* redundant phpdoc
2021-01-29 11:38:57 +01:00
Brown
0116284d16
Improve unique issue solution
2021-01-29 11:38:57 +01:00
Brown
568cbfb1be
Fix tests
2021-01-29 11:38:56 +01:00
Brown
ca0608d92a
Fix #4070 - prevent literal strpos argument
2021-01-29 11:38:56 +01:00
Brown
c291b93bbe
Fix #4167 - allow many issues for the same position
2021-01-29 11:38:56 +01:00
Brown
b84e88f342
Fix #4154 - treat literal numeric strings as numeric
2021-01-29 11:38:56 +01:00
Brown
b148221e18
Always detect return type mismatches from docblock parents
2021-01-29 11:38:56 +01:00
Brown
539bc13cb3
Fix some signatures
2021-01-29 11:38:55 +01:00
Brown
cbb97c42a8
Fix #4146 - allow null checks on Iterator::current output
2021-01-29 11:38:55 +01:00
Brown
e7730c2b34
Fix #4148 - add Closure to scanned classes when arrow function is seen
2021-01-29 11:38:55 +01:00
orklah
1348e61afb
add native param types ( #4137 )
...
* add native param types
* redundant phpdoc
* add more param types and adds "?" to nullable types
* remove redundant phpdoc
* add more param types and remove redundant phpdoc
* add more param types and remove redundant phpdoc
2021-01-29 11:38:54 +01:00
Matthew Brown
274d19c649
Prevent variables named "haystack" from receiving literal strings
...
cc @staabm
2021-01-29 11:38:54 +01:00
Matthew Brown
4dc045f30d
Support analysing preg_match_all args in reverse to infer matches type
2021-01-29 11:38:54 +01:00
Brown
f7474faff2
Hard code possible bit-shift values
2021-01-29 11:38:54 +01:00
Brown
4583467325
Fix #4128 - improve understanding of preg_match_all
2021-01-29 11:38:53 +01:00
Brown
be3d130965
Fix #4132 - ignore purity of $this when checking for initialisation
2021-01-29 11:38:53 +01:00
orklah
61512da144
add native return types ( #4116 )
...
* add native return types
* remove redundant phpdoc
2021-01-29 11:38:53 +01:00
Brown
f9d6b9d7c1
Improve tests a little
2021-01-29 11:38:53 +01:00
Brown
06a9ae9c6c
Clean up immutable fix
2021-01-29 11:38:52 +01:00
Brown
4d0b91fcd2
Allow passing mutable object into immutable class to store reference
2021-01-29 11:38:52 +01:00
Brown
e3d7d0315a
Fix #4109 - detect duplicate match condition
2021-01-29 11:38:52 +01:00
Brown
58cda0a003
Fix #4112 - allow slashes in docblock tag names
2021-01-29 11:38:52 +01:00
orklah
becac547fb
Short list syntax ( #4102 )
...
* Short list syntax
* revert unrelated CS
2021-01-29 11:38:52 +01:00
Brown
b94de0c8b8
Add more accomodations for TPositiveInt
2021-01-29 11:38:51 +01:00
Brown
73770f4268
Fix erroneous Closure::__invoke return type
2021-01-29 11:38:51 +01:00
Brown
472c2839ad
Fix crash with @var
over echo
2021-01-29 11:38:51 +01:00
Brown
8611f99e09
Fix exhaustiveness checks for const value
2021-01-29 11:38:50 +01:00
Brown
d7cc68cb09
Fix issues
2021-01-29 11:38:50 +01:00
Brown
a0a7f8a98b
Catch unmatched matches
2021-01-29 11:38:50 +01:00
Brown
b62719c9c8
Fix some magic method calls when a return type provider exists
2021-01-29 11:38:50 +01:00
Brown
eae55eb584
Fix #4093 - prevent redundant condition in presence of positive-int
2021-01-29 11:38:50 +01:00
Brown
9b726904f9
Ignore redundant conditions inside match potentially in perpetuity?
2021-01-29 11:38:49 +01:00
Brown
b785efb210
Support match expressions and throw expressions
2021-01-29 11:38:49 +01:00
Brown
36b1a21fcf
Support mixed type natively
2021-01-29 11:38:49 +01:00
Brown
65c855a4d3
Support static return type
2021-01-29 11:38:49 +01:00
Brown
e5aae7f9e6
Support PHP 8 union types
2021-01-29 11:38:49 +01:00
Brown
5bd8fa61c6
Change version test
2021-01-29 11:38:49 +01:00
Brown
c96ba8d1f5
Add some backwards-incompatible changes for 4.x
2021-01-29 11:38:48 +01:00
Brown
226f3cef6a
Improve understanding of negated count queries
2021-01-29 11:38:48 +01:00
Brown
4b628c7db5
Improve Closure::fromCallable handling
2021-01-29 11:38:48 +01:00
Tyson Andre
c9ff06d4d4
Fix expected php 8.0 syntax error ( #4084 )
...
This will very likely be parsed as an attribute in php 8.0
See
https://wiki.php.net/rfc/shorter_attribute_syntax_change#secondary_vote
2021-01-29 11:38:48 +01:00
Brown
38cd48657f
Fix modulo test
2021-01-29 11:38:48 +01:00
Brown
e5e50926d4
Fix #4083 - namespace docblock method classes the proper way
2021-01-29 11:38:48 +01:00
Brown
b7002ceb9f
Fix treatment of closure params in array_map
2021-01-29 11:38:48 +01:00
Brown
9f246938ba
Fix #4081 - better inference of positive ints
2021-01-29 11:38:48 +01:00
Brown
5232f3012c
Fix test
2021-01-29 11:38:47 +01:00
Brown
02255ae26b
Fix #4077 - always track closure purity
2021-01-29 11:38:47 +01:00
Brown
5835eec863
Fix #4061 - allow indirect null comparison check
2021-01-29 11:38:46 +01:00
Brown
489cd99752
Allow bare pure-callable in namespace cc @azjezz
2021-01-29 11:38:46 +01:00
Saif Eddin G
a0a30c500c
add pure-callable type ( #4066 )
2021-01-29 11:38:46 +01:00
Brown
6d43a6696c
Make clause fully immutable
2021-01-29 11:38:46 +01:00
Brown
b09309aa92
Prevent unset on immutable properties
2021-01-29 11:38:46 +01:00
Brown
11ee00442d
Refine iterable key after is_array check
...
Ref #4038
2021-01-29 11:38:46 +01:00
Brown
e585955c96
Use immutable data structures for clause calculations
2021-01-29 11:38:45 +01:00
Brown
ab8d794709
Refine test for windows compat
2021-01-29 11:38:45 +01:00
Brown
4735ca39e2
Fix get_class-inferred templating
2021-01-29 11:38:45 +01:00
Brown
a0a9c9b7bc
Fix #4038 - don’t remove null types unnecessarily in mixed union
2021-01-29 11:38:45 +01:00
Brown
bd7f207e31
Preserve intersections when expanding templated types
...
Fixes #4043
2021-01-29 11:38:45 +01:00
Brown
6aa8a492ac
Create empty params by default for SplObjectStorage
...
Fixes #4055
2021-01-29 11:38:45 +01:00
Brown
51bfb3666b
Fix #4052 - foreach over an iterable is impure
2021-01-29 11:38:45 +01:00
Brown
8ca604a533
Expand object-with-properties
...
Fixes #4057
2021-01-29 11:38:45 +01:00
Brown
91e1e5f0f6
Fix #4036 - add immutable annotations automatically too
2021-01-29 11:38:44 +01:00
Bruce Weirdan
1ac27d6d22
Fix prophecy warnings ( #4051 )
...
* Use weirdan/prophecy-shim to avoid PHPUnit warnings on prophesize() calls
* Drop vcs repo as the package is already available on packagist
* Bump psalm/plugin-phpunit
Fixes Prophecy-related issues
2021-01-29 11:38:44 +01:00
Matthew Brown
c4074012f8
Fix immutable tests
2021-01-29 11:38:44 +01:00
Brown
596492a95a
Only add pure when not overriding upstream
2021-01-29 11:38:44 +01:00
Brown
fe5fd82a93
Fix ImpureVariable test
2021-01-29 11:38:44 +01:00
Brown
5513fcdcff
Prevent isset on uknown property in pure function
2021-01-29 11:38:44 +01:00
Brown
1ec0f35011
Only add pure to functions with params
2021-01-29 11:38:43 +01:00
Matthew Brown
07843d4768
Don’t add pure annotation when closure is impure
2021-01-29 11:38:43 +01:00
Matthew Brown
601a8fdcb6
Restrict pure annotation addition a little more
2021-01-29 11:38:42 +01:00
Brown
bc945b98bd
Allow modification after clone in pure context
2021-01-29 11:38:04 +01:00
Brown
47faea8ca3
Prohibit property fetches from pure contexts except when they’re on immutable objects
2021-01-29 11:38:04 +01:00
Bruce Weirdan
dabfb16e34
Test parallelization ( #4045 )
...
* Run tests in random order
Being able to run tests in any order is a pre-requisite for being able
to run them in parallel.
* Reset type coverage between tests, fix affected tests
* Reset parser and lexer between test runs and on php version change
Previously lexer was reset, but parser kept the reference to the old
one, and reference to the parser was kept by StatementsProvider. This
resulted in order-dependent tests - if the parser was first initialized
with phpVersion set to 7.4 then arrow functions worked fine, but were
failing when the parser was initially constructed with settings for 7.3
This can be demonstrated on current master by upgrading to
nikic/php-parser:4.9 and running:
```
vendor/bin/phpunit --no-coverage --filter="inferredArgArrowFunction" tests/ClosureTest.php
```
Now all tests using PHP 7.4 features must set the PHP version
accordingly.
* Marked more tests using 7.4 syntax
* Reset newline-between-annotation flag between tests
* Resolve real paths before passing them to checkPaths
When checkPaths is called from psalm.php the paths are resolved, so we
just mimicking SUT behaviour here.
* Restore newline-between-annotations in DocCommentTest
* Tweak Appveyor caches
* Tweak TravisCI caches
* Tweak CircleCI caches
* Run tests in parallel
Use `vendor/bin/paratest` instead of `vendor/bin/phpunit`
* Use default paratest runner on Windows
WrapperRunner is not supported on Windows.
* TRAVIS_TAG could be empty
* Restore appveyor conditional caching
2021-01-29 11:38:04 +01:00
Brown
bcc9c413ad
Allow adding pure annotations to functions
...
Ref #4036
2021-01-29 11:38:04 +01:00
Bruce Weirdan
1cc4715740
Fix windows tests ( #4040 )
...
* Fix windows tests by not mangling the expectations
* Use platform-dependent directory separator in expected messages
* fix CS
2021-01-29 11:38:04 +01:00
Bruce Weirdan
78a63ed25a
Resolve typedefs that are used in var docblocks of foreach ( #4037 )
...
Fixes vimeo/psalm#4029
2021-01-29 11:38:03 +01:00
Brown
7ac771da48
Fix #4017 - allow float defaults in namespaced classes
2021-01-29 11:37:59 +01:00
Olle
3630b4a2f9
Merge remote-tracking branch 'remotes/upstream/master'
2020-08-18 15:59:46 +00:00