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
Bauke van der Woude
7ac6d2e5a4
Fix hash_*() signatures ( #4014 )
...
Functions can return false when an invalid algorithm is supplied
2020-08-18 09:35:31 -04:00
Brown
1468a28273
Fix #3999 - allow @psalm-type to reference imported type right above
2020-08-18 09:34:07 -04:00
Brown
134955a5f4
Fix #4011 - prevent mixed assignment in loop
2020-08-18 08:51:09 -04:00
Daniel Melchior
17ed440f2e
fix #4013 : prevent exception when two mixins declare methods with same name ( #4018 )
...
fixes #4013
2020-08-18 08:38:30 -04:00
Brown
de6b354fa0
Fix #4005 - prevent crash when assignment var assertion no longer valid
2020-08-17 15:47:39 -04:00
Brown
11f170acb4
Don’t modify object after unnecessary assertion
2020-08-16 23:38:59 -04:00
Bruce Weirdan
7adc25c421
Improve import errors ( #3997 )
...
* Better errors for invalid type imports
Fixes vimeo/psalm#3885
* Finishing touches
Docs, schema, CS
* Drop unused import
* Drop more unused imports
2020-08-16 22:53:53 -04:00
Bruce Weirdan
22d8f5a0bc
Fixed duplicate shortcodes ( #3996 )
...
Also added an utility to help assign new shortcodes and a test to
prevent duplicate shortcodes.
2020-08-16 16:26:54 -04:00
Matthew Brown
cb243778d2
Fix #3917 - allow comparisons between classes and interfaces
2020-08-16 16:25:59 -04:00
Matthew Brown
38af5db8f0
Fix #3929 - merge expanded types where necessary
2020-08-16 16:12:29 -04:00
Matthew Brown
5c20a5295e
Improve solution to #3964
2020-08-16 13:03:30 -04:00
Matthew Brown
ec2178d14a
Fix #3927 - prevent crash with bad type ref
2020-08-16 12:43:46 -04:00
Matthew Brown
a356a43a51
Fix #3964 - prevent incorrect intersection of unions
2020-08-16 12:26:07 -04:00
Matthew Brown
a0bb5ed37d
Fix #3991 - fix test
2020-08-15 14:21:24 -04:00
Brown
cdef4ec351
Alter docblock params too
2020-08-14 16:26:55 -04:00
Brown
dbcf154036
Add fixer for mismatching param names
2020-08-14 15:25:21 -04:00
Brown
209d17c868
Fix #2891 - treat autoloaded constants better
2020-08-13 09:14:27 -04:00
Brown
42c3a703b5
Fix #3741 - detect scalar class constants in if-true assertions
2020-08-12 17:03:41 -04:00
Toshiyuki Goto
e0d1655582
Add an unqualified classes in PHPUnit/Framework/Assert/Functions.php to $knownBadClasses ( #3985 )
2020-08-11 07:33:11 -04:00
m0003r
e81593f359
Localize types on magic properties ( #3971 )
...
* Fix #3949 - localize types on magic properties
* fix failing tests
* fix code style
Co-authored-by: m03r <m03r@m03r.net>
2020-08-10 12:45:21 -04:00
Brown
6def99d653
Add ConstructorSignatureMismatch issue distinct from MethodSignatureMismatch
2020-08-10 12:26:25 -04:00