1
0
mirror of https://github.com/danog/psalm.git synced 2024-11-27 04:45:20 +01:00
Commit Graph

7189 Commits

Author SHA1 Message Date
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
Tom Klingenberg
fd96419527
Revert config schema, fix b/c break (#4046)
Previous in d5055ea the allowCoercionFromStringToClassConst attribute has
been removed from the XML configuration file per its schema.

While technically correct (was removed in 3.0), this breaks b/c between
minor versions, breaks with the release of 3.14.0.

Fix is revert.

Ref: d5055ea1d4
Caused-by: #3982
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
e938e73549
Add a couple more pure annotations 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
Brown
9100c26439
Prevent use of $this in pure functions 2021-01-29 11:38:43 +01:00
Brown
e9f07ac4b4
Add another pure annotation 2021-01-29 11:38:43 +01:00
Brown
ee41560590
Allow function manipulators to work in threaded mode 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
fffa0a72c0
Add another pure annotation 2021-01-29 11:38:43 +01:00
Matthew Brown
2e2f0a2386
Don’t add @psalm-pure for void-returning functions 2021-01-29 11:38:43 +01:00
Matthew Brown
5656591962
Add some pure annotations 2021-01-29 11:38:43 +01:00
Matthew Brown
5dc60d7d6a
Fix docblock removal 2021-01-29 11:38:43 +01:00
Matthew Brown
ae51f40a54
glob is impure 2021-01-29 11:38:43 +01:00
Matthew Brown
68b97591d9
Nest new impure checks 2021-01-29 11:38:42 +01:00
Matthew Brown
601a8fdcb6
Restrict pure annotation addition a little more 2021-01-29 11:38:42 +01:00
Matthew Brown
0c3306b002
Add more impure functions 2021-01-29 11:38:42 +01:00
Matthew Brown
9d6939226e
Static property fetching is bad 2021-01-29 11:38:42 +01:00
Matthew Brown
8589e4af55
Fix docs 2021-01-29 11:38:41 +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
Michel Hunziker
4e20258efa
Add configuration attribute to find unused @psalm-suppress (#4041) 2021-01-29 11:38:04 +01:00
Bruce Weirdan
8e42ba4357
Don't hang when pcntl_fork is disabled (#4039)
* Don't hang when pcntl_fork is disabled

Fixes vimeo/psalm#3951

* fix CS
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
Tyson Andre
84dac4a6aa
Set up taint analysis for pgsql functions (#4021)
I noticed that entries in InternalTaintSinkMap don't warn
unless the functions are added to CallMap.php
e.g. `pg_exec($conn, $_GET['query']);`
(pg_exec is an alias of pg_query)
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
Brown
ebe37392eb Fix #4019 - new static isn’t static if class is final 2020-08-18 11:25:11 -04: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
SignpostMarv
9822043ca4
flag class_exists as impure per vimeo/psalm#3975 (#4004)
`class_exists()` interacts with PHP's autoloader feature, which allows
user-defined behaviour to take place when PHP tries to load a given
class or interface.
2020-08-17 15:48:48 -04:00
Gabriel Ostrolucký
81a117be85
Mark fgets impure (#4006)
This function is used to skip line of text
2020-08-17 15:48:28 -04:00
Brown
de6b354fa0 Fix #4005 - prevent crash when assignment var assertion no longer valid 2020-08-17 15:47:39 -04:00
Brown
12798d1cab Prevent access to possibly unset var 2020-08-17 15:25:13 -04:00
Matthew Brown
f48a362fcd
Add reference to automatic fix 2020-08-17 11:58:30 -04:00
Brown
03ab279cc4 Add ParamNameMismatch fixing documentation 2020-08-17 11:57:27 -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
Brown
bb3c5d4c38 Fix too many arguments 2020-08-16 21:10:09 -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