orklah
73f6fcde48
Short list syntax ( #4102 )
...
* Short list syntax
* revert unrelated CS
2020-09-02 00:17:41 -04:00
Brown
8d790256e0
Revert trim changes
2020-09-01 17:42:11 -04:00
Brown
0804141d56
Fix type coercion
2020-09-01 17:23:43 -04:00
Brown
f105f6aca9
Fix Psalm errors
2020-09-01 13:21:24 -04:00
Brown
c2f492a4ca
Add more accomodations for TPositiveInt
2020-09-01 13:03:57 -04:00
Brown
b5279cd7d4
Fix erroneous Closure::__invoke return type
2020-09-01 12:33:25 -04:00
lhchavez
817779274e
Add null
as a possible type parameter to strval
( #4100 )
...
https://www.php.net/manual/en/language.types.string.php#language.types.string.casting mentions
> `NULL` is always converted to an empty string.
Which seems to indicate that it is a valid argument for it.
As opposed to stringifying other types (like arrays), `strval(null)` does not cause a warning in PHP.
2020-09-01 09:21:32 -04:00
Bruce Weirdan
ffb316a9e6
Converted MissingPropertyType to property issue ( #4099 )
...
Fixes vimeo/psalm#2200
2020-09-01 09:21:03 -04:00
orklah
6d36f8f5cc
Nullable strings ( #4096 )
2020-09-01 09:19:50 -04:00
Markus Staab
0280757b4a
Added more fine grained strpos stub ( #4101 )
...
* Added strpos stub
* Update CoreGenericFunctions.phpstub
* Update CoreGenericFunctions.phpstub
2020-09-01 09:17:57 -04:00
Brown
548ac1129c
Fix crash with @var
over echo
2020-09-01 00:12:12 -04:00
Brown
4f578b42b8
Fix exhaustiveness checks for const value
2020-08-31 23:23:24 -04:00
Brown
ab063e80d7
Keep going
2020-08-31 23:11:16 -04:00
Brown
3cdb13f7ab
Fix issues
2020-08-31 23:03:36 -04:00
Brown
940459787a
Catch unmatched matches
2020-08-31 22:59:47 -04:00
Brown
9935f647ab
Fix some magic method calls when a return type provider exists
2020-08-31 18:56:45 -04:00
Brown
5905171b79
Fix api
2020-08-31 16:40:46 -04:00
Brown
e8148980ff
Remove unused variable
2020-08-31 10:49:37 -04:00
Joe Hoyle
674392737d
Include variadic and pass-by-ref params in generated stubs ( #4091 )
...
When generating stubs, params that are passed by ref or variadic don't get added to the generated code stub output.
2020-08-31 10:05:22 -04:00
Brown
40e88095d8
Fix #4093 - prevent redundant condition in presence of positive-int
2020-08-31 10:02:23 -04:00
Brown
940b673a36
Fix fns
2020-08-30 18:29:28 -04:00
Brown
2cbe89d55a
Fix Psalm errors
2020-08-30 16:30:43 -04:00
Brown
5c043b0d41
Ignore redundant conditions inside match potentially in perpetuity?
2020-08-30 16:23:53 -04:00
Brown
54a781ad28
Support match expressions and throw expressions
2020-08-30 16:08:22 -04:00
Brown
99d6af0f9a
Support static return type
2020-08-30 13:32:42 -04:00
Brown
f34e54ec41
Support PHP 8 union types
2020-08-30 13:16:37 -04:00
Brown
92239add4d
Add some backwards-incompatible changes for 4.x
2020-08-30 11:44:14 -04:00
Brown
c13b0efd49
Improve understanding of negated count queries
2020-08-30 11:32:01 -04:00
Brown
64f08fa9dc
Improve Closure::fromCallable handling
2020-08-29 22:02:58 -04:00
Brown
cf5aa5c5cd
Fix #4083 - namespace docblock method classes the proper way
2020-08-29 11:46:24 -04:00
Brown
efed9d4480
Allow ParamNameMismatch to be suppressed locally
...
Fixes #4012
2020-08-29 11:17:57 -04:00
Brown
3ca4a576e7
Fix treatment of closure params in array_map
2020-08-29 11:10:09 -04:00
Brown
df0d426f61
Fix #4081 - better inference of positive ints
2020-08-28 16:38:50 -04:00
Brown
d29620a42b
Fix style issues
2020-08-28 15:46:55 -04:00
Brown
1825e30752
Allow pure-Callable type to be annotated
2020-08-28 13:15:04 -04:00
Brown
63b74276c6
Report use of impure closures
2020-08-28 13:01:14 -04:00
Brown
98ce590e9d
Remove some redundant calls
2020-08-28 12:48:33 -04:00
Brown
efe143a396
Fix #4077 - always track closure purity
2020-08-28 12:42:55 -04:00
Brown
5f5ce6eb32
Fix typo
2020-08-26 18:16:12 -04:00
Brown
e64d45b644
Fix #4061 - allow indirect null comparison check
2020-08-26 17:58:01 -04:00
Brown
936a7e01b6
Allow bare pure-callable in namespace cc @azjezz
2020-08-26 16:57:27 -04:00
Brown
e9adcb8d35
Simplify simplification
2020-08-26 16:51:55 -04:00
Saif Eddin G
5a20092fbd
add pure-callable type ( #4066 )
2020-08-26 16:51:22 -04:00
Brown
988e17f11d
Make clause fully immutable
2020-08-26 15:35:29 -04:00
Brown
b2b329d1a9
Prevent unset on immutable properties
2020-08-26 12:18:34 -04:00
Brown
f33d626052
Use a slightly cleaner fix
2020-08-26 11:03:27 -04:00
Brown
9878613594
Refine iterable key after is_array check
...
Ref #4038
2020-08-26 11:00:38 -04:00
Brown
8ad1c2eeb1
Use immutable data structures for clause calculations
2020-08-26 10:41:47 -04:00
Brown
20e004744f
Fix #4064 - assume most iterators are impure
2020-08-25 18:04:36 -04:00
Brown
59e7f69d7b
Fix get_class-inferred templating
2020-08-25 17:25:05 -04:00
Brown
6ab3e732fb
Fix #4038 - don’t remove null types unnecessarily in mixed union
2020-08-25 15:50:33 -04:00
Brown
d25a24ee89
Fix type bug
2020-08-25 15:09:14 -04:00
Brown
6e1218065d
Preserve intersections when expanding templated types
...
Fixes #4043
2020-08-25 14:12:57 -04:00
Brown
346d475f55
Create empty params by default for SplObjectStorage
...
Fixes #4055
2020-08-25 11:52:21 -04:00
Brown
2b060b75d3
Fix #4052 - foreach over an iterable is impure
2020-08-25 11:24:57 -04:00
Brown
3f50fbc116
Expand object-with-properties
...
Fixes #4057
2020-08-25 10:15:56 -04:00
Brown
7dba9bc50a
Add a bunch of immutable & pure annotations
2020-08-24 19:29:00 -04:00
Brown
4e10a0ed6f
Fix #4036 - add immutable annotations automatically too
2020-08-24 19:29:00 -04:00
Matthew Brown
c8ecee109c
Fix immutable tests
2020-08-24 00:35:59 -04:00
Brown
94cec15598
Only add pure when not overriding upstream
2020-08-23 22:16:03 -04:00
Brown
6103cf0f51
Fix ImpureVariable test
2020-08-23 22:07:02 -04:00
Brown
ba1ff21af4
Add a couple more pure annotations
2020-08-23 18:53:34 -04:00
Brown
140d37c7ef
Prevent isset on uknown property in pure function
2020-08-23 18:50:17 -04:00
Brown
02a2e99d42
Only add pure to functions with params
2020-08-23 18:41:31 -04:00
Brown
10f7031080
Prevent use of $this
in pure functions
2020-08-23 18:37:46 -04:00
Brown
41cf47ef0b
Add another pure annotation
2020-08-23 18:07:49 -04:00
Brown
4026b717b9
Allow function manipulators to work in threaded mode
2020-08-23 18:05:48 -04:00
Matthew Brown
8a975d7c20
Don’t add pure annotation when closure is impure
2020-08-23 14:07:19 -04:00
Matthew Brown
64fd2d60f4
Add another pure annotation
2020-08-23 14:02:10 -04:00
Matthew Brown
6efaf474d4
Don’t add @psalm-pure for void-returning functions
2020-08-23 13:58:34 -04:00
Matthew Brown
ef0486ce35
Add some pure annotations
2020-08-23 13:52:31 -04:00
Matthew Brown
d2b07ebde8
Fix docblock removal
2020-08-23 13:45:45 -04:00
Matthew Brown
06c231fbba
glob is impure
2020-08-23 13:41:43 -04:00
Matthew Brown
89dd5ee563
Nest new impure checks
2020-08-23 13:39:08 -04:00
Matthew Brown
9418be79cc
Restrict pure annotation addition a little more
2020-08-23 13:34:32 -04:00
Matthew Brown
f6135bcefc
Add more impure functions
2020-08-23 13:15:27 -04:00
Matthew Brown
6a8ad1876f
Static property fetching is bad
2020-08-23 13:10:47 -04:00
Brown
c8ea4b4e8b
Prohibit property fetches from pure contexts except when they’re on immutable objects
2020-08-23 10:57:24 -04:00
Bruce Weirdan
1cf5153700
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
2020-08-23 10:32:07 -04:00
Brown
67f9adb33c
Allow adding pure annotations to functions
...
Ref #4036
2020-08-23 10:28:26 -04:00
Bruce Weirdan
1f54c42a4c
Don't hang when pcntl_fork is disabled ( #4039 )
...
* Don't hang when pcntl_fork is disabled
Fixes vimeo/psalm#3951
* fix CS
2020-08-22 10:01:00 -04:00
Bruce Weirdan
5bf7cc6434
Resolve typedefs that are used in var docblocks of foreach ( #4037 )
...
Fixes vimeo/psalm#4029
2020-08-22 08:20:05 -04:00
Tyson Andre
e62e964167
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)
2020-08-19 10:41:02 -04:00
Brown
45d9ab12e1
Fix #4017 - allow float defaults in namespaced classes
2020-08-18 12:13:27 -04: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
12798d1cab
Prevent access to possibly unset var
2020-08-17 15:25:13 -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
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
e972319f8c
Remove unused variable
2020-08-16 14:22:11 -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