Matt Brown
1ae9a6127e
Fix #4315 - prevent crash when setting unknown property in finally
2020-10-13 08:32:26 -04:00
Matt Brown
bb7d7132f7
Do arithmetic for preg_split arguments
2020-10-12 20:26:02 -04:00
Matt Brown
fee3b63122
Fix #4274 - don’t ignore mixed union in array_shift operation
2020-10-12 15:17:22 -04:00
orklah
10f2966dcb
return types ( #4311 )
...
* return types
* remove willReturn for void methods
2020-10-12 15:02:52 -04:00
Matt Brown
fcfa746ba8
Fix #4310 - prevent literal class check on union
2020-10-12 14:45:11 -04:00
Matt Brown
464795d86c
Fix #4309 - improve reuse of callmap callable inference
2020-10-12 13:46:43 -04:00
Matt Brown
f83b50460a
Add better return type for preg_split
2020-10-12 13:04:28 -04:00
Matt Brown
5743471a19
Don’t merge array and Traversable to iterable when there are intersections
2020-10-12 12:45:31 -04:00
Matt Brown
d8a74ca383
4.x - Prevent passing empty array to max or min
2020-10-12 12:09:12 -04:00
Matt Brown
7cf6495461
4.x - skip Stringable test if not in PHP 8.0
2020-10-12 11:35:14 -04:00
Matt Brown
7e65355513
4.x - detect falty !is_resource checks
2020-10-12 09:57:11 -04:00
Matt Brown
5be7276a17
Fix #4306 - negating positive-numeric is useless, avoid crash
2020-10-11 23:16:43 -04:00
Matt Brown
7195275993
Fix #4299 - only allow unpacking for the zeroeth-indexed element
2020-10-08 09:51:27 -04:00
Matt Brown
e9b520d72d
Ignore precondition issues in loop
2020-10-07 20:24:50 -04:00
Matt Brown
443025eab8
Fix addition of int and string type
2020-10-07 18:01:41 -04:00
Matt Brown
1f2d2764ab
Fix #4287 - intersection of regular arrays should not result in crash
2020-10-07 17:47:17 -04:00
Matt Brown
c2108e89db
Warn about impossible/redundant conditions in RHS of ||
2020-10-07 17:04:01 -04:00
Matt Brown
595b8178e0
Improve error message
2020-10-07 15:36:31 -04:00
Matt Brown
639ae61284
Always check LHS of or condition before applying to RHS
2020-10-07 13:40:09 -04:00
feek
8d2db4e673
feature: universal object crates ( #3948 )
...
* feature: universal object crates
* docs: document universal object crate config option
Co-authored-by: Matthew Brown <github@muglug.com>
2020-10-07 09:56:21 -04:00
Matt Brown
db4d5bca95
Fix tests
2020-10-05 10:14:39 -04:00
Matt Brown
377dc8da8f
4.x - change/remove some default config values
2020-10-05 10:08:41 -04:00
Matt Brown
bf98e5b30c
Remove by-ref
2020-10-05 09:16:01 -04:00
Matt Brown
ea47548dd0
4.x - Prevent AfterFunctionCallAnalysisInterface from rewriting return types
2020-10-04 23:39:20 -04:00
Matt Brown
d532133325
Add support for Stringable
2020-10-04 00:17:16 -04:00
Matt Brown
ec3501b244
Ensure PHP 8 continuation of 7.4 method signature features
2020-10-03 23:34:29 -04:00
Matt Brown
8f490f0f88
Skip faulty documentation key
2020-10-03 23:22:26 -04:00
Matt Brown
1a11897849
4.x - add support for the nullsafe operator
2020-10-03 20:21:52 -04:00
Matt Brown
6a91c2f70e
Fix @no-named-arguments more
2020-10-02 21:09:37 -04:00
Matt Brown
63a11bae15
4.x - Support named arguments
...
Ref #4089
2020-10-02 20:27:01 -04:00
Matt Brown
2cd306b75c
Promoted properties are always initialized
2020-10-02 19:44:58 -04:00
Matt Brown
211553c53f
Support property type promotion ref #4089
2020-10-02 18:31:32 -04:00
Matt Brown
c9e47450a7
Fix #4266 - prevent OOM when analysing closure unioned with invokable class
2020-10-02 00:47:42 -04:00
Matt Brown
6ad5e1c013
Fix #4264 - prevent crash when analysing file with duplicate classes
2020-10-01 15:07:25 -04:00
Matt Brown
fc001cdf65
Treat func_get_args as using function params
2020-09-30 13:08:01 -04:00
Matt Brown
14efde286f
4.x - refactor unused variable detection
...
This turns unused variable detection into an explicit control-flow problem, where before we had a more simplistic mark-and-sweep algorithm
2020-09-30 12:28:13 -04:00
Matt Brown
169b2b7023
Fix analysis when there’s a break in a loop after a reassignment
2020-09-30 00:04:07 -04:00
Brown
19f88a2e31
Add improvements from unused variable checks
2020-09-28 00:45:02 -04:00
Brown
4b401f0a77
Add more unused variable tests
2020-09-27 18:12:53 -04:00
Brown
1afbce82ca
Ensure loop marks vars as possibly assigned
2020-09-27 17:50:48 -04:00
Bruce Weirdan
d9776aa710
Fixes crash due to class/filename mismatch ( #4247 )
...
Introduced in 56cddd16bf
2020-09-26 13:31:38 -04:00
Brown
4f28b38556
Fix unused var in finally false-positive
2020-09-25 10:20:22 -04:00
Brown
c17bacd682
Prevent duplicate switch return types
2020-09-25 09:45:20 -04:00
Brown
ea08e0c613
Fix test result
2020-09-25 08:42:27 -04:00
Brown
da65a4327f
Move taint graph functionality into its own object
2020-09-25 00:37:40 -04:00
Brown
d879b4d199
Add more tests for unused variables
2020-09-25 00:14:27 -04:00
orklah
37a2f8a33d
unused use statements ( #4228 )
2020-09-22 01:10:46 -04:00
Brown
b501db6dd2
Skip currently-failing undefined variable test
2020-09-21 16:01:14 -04:00
Brown
3e0f449163
Detect more issues inside finally block
2020-09-21 15:16:19 -04:00
Brown
56cddd16bf
Rename TaintGraph to ControlFlowGraph because it’s about to do more
2020-09-20 23:59:52 -04:00
Brown
6334c50c07
Add back necessary suppression
2020-09-20 21:25:35 -04:00
Brown
ef612ea598
Fix tests
2020-09-20 20:58:34 -04:00
Brown
5c23a3d7b3
Localise taint analysis better
2020-09-20 19:26:49 -04:00
Brown
abb9502921
Rename Taint object to TaintGraph
2020-09-20 18:27:02 -04:00
orklah
7093253eea
fix test on windows ( #4225 )
2020-09-20 13:00:30 -04:00
orklah
24a38f21ce
Use array destructuring when possible ( #4221 )
...
* list usage
* fix inversion
2020-09-20 12:55:38 -04:00
Brown
ef3cf67f50
Fix #4198 - make analysis of class-string property assignments more robust
2020-09-20 09:18:35 -04:00
orklah
cb7065ae07
replace deprecated methods with their equivalent ( #4217 )
2020-09-20 08:56:49 -04:00
orklah
b19f0a7034
Remove empty() and use strict comparison when safe ( #4211 )
...
* replace empty usage with stricter checks
* use strict comparison when safe
* replace is_null with === null for consistency
2020-09-19 18:26:51 -04:00
Brown
0ae436d335
Fix a couple of false-positive redundant conditions
2020-09-19 18:12:14 -04:00
Brown
941643ca59
Fix tests
2020-09-19 17:04:35 -04:00
Brown
72d1d799b1
Fix #4208 - array with possibly-undefined keys isn‘t really sealed
2020-09-19 15:46:54 -04:00
Brown
f973937aec
Fix #4209 - allow hinting arrow function return type
2020-09-19 14:59:19 -04:00
Brown
a8a2a4cb66
Fix #4210 - fix __invoke declaration tracing
2020-09-19 14:18:52 -04:00
Brown
0b209864fe
Improve accuracy of array_filter
2020-09-14 13:31:53 -04:00
Brown
8d7fe83e2a
Improve array_merge return type
2020-09-14 13:06:15 -04:00
Brown
1f3215d36b
Support more array intersections in type parsing
2020-09-14 12:13:33 -04:00
Brown
17a0ecb60e
Fix regression – detect unused params with defaults again
2020-09-14 10:58:36 -04:00
Brown
79f4e9c354
Do no writing when saving parser cache in tests
2020-09-14 09:56:39 -04:00
Brown
77e84b3817
Fix a few more things
2020-09-13 23:28:31 -04:00
Brown
c4450b930c
Fix various things
2020-09-13 22:39:03 -04:00
Brown
3f911662f7
Fix stub test
2020-09-13 22:13:39 -04:00
Brown
56bae3b587
Add check for strpos dictionaries
...
Ref #4070
2020-09-13 21:42:44 -04:00
Brown
8f8dbfbd72
Fix #4122 - detect yield in function arguments
2020-09-13 17:13:26 -04:00
Brown
f180fb23bc
Fix #4178 - always detect missing property types
2020-09-13 16:50:50 -04:00
Bruce Weirdan
689027c92d
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
2020-09-13 16:41:14 -04:00
Bruce Weirdan
cd110c7e2f
Added @psalm-stub-override
for classlikes and methods ( #4177 )
...
Fixes vimeo/psalm#1252
2020-09-13 16:40:31 -04:00
orklah
da47588f91
replace return;
by return null;
in every non-void method, add return null;
when mising, add return types, remove redundant phpdoc ( #4176 )
2020-09-13 16:39:06 -04:00
Brown
9ed09d2679
Fix #4127 - improve error message for unused closure var
2020-09-12 17:03:11 -04:00
ygottschalk
5b0c9b1a28
added array-size max constraint to greater check ( #4175 )
...
added a few unit tests
2020-09-12 16:13:13 -04:00
Brown
09d22cb05c
Fix #4169 - add appropriate bounds check
2020-09-12 11:33:26 -04:00
orklah
ead107fa9e
More return types ( #4173 )
...
* add native return types
* redundant phpdoc
2020-09-12 11:24:05 -04:00
Brown
eda426a594
Improve unique issue solution
2020-09-10 22:54:30 -04:00
Brown
00ad09816f
Fix tests
2020-09-10 19:05:47 -04:00
Brown
aaede393d4
Fix #4070 - prevent literal strpos argument
2020-09-10 18:28:34 -04:00
Brown
2100dbd8aa
Fix #4167 - allow many issues for the same position
2020-09-10 17:41:45 -04:00
Brown
29efab5cc2
Fix #4154 - treat literal numeric strings as numeric
2020-09-07 23:29:46 -04:00
Brown
877a81f808
Always detect return type mismatches from docblock parents
2020-09-07 16:42:25 -04:00
Brown
4ffdbe0a21
Fix some signatures
2020-09-07 16:00:27 -04:00
Brown
f78fbbe4c9
Fix #4146 - allow null checks on Iterator::current output
2020-09-07 11:40:36 -04:00
Brown
02a58f787b
Fix #4148 - add Closure to scanned classes when arrow function is seen
2020-09-07 11:11:01 -04:00
orklah
8c7423505a
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
2020-09-06 19:36:47 -04:00
Matthew Brown
422271b2cf
Prevent variables named "haystack" from receiving literal strings
...
cc @staabm
2020-09-05 00:35:48 -04:00
Matthew Brown
3605eeee04
Support analysing preg_match_all args in reverse to infer matches type
2020-09-04 20:33:02 -04:00
Brown
d3d8c4ed87
Hard code possible bit-shift values
2020-09-04 18:31:50 -04:00
Brown
4d82d3ddad
Fix #4128 - improve understanding of preg_match_all
2020-09-04 18:10:14 -04:00
Brown
f4c2edf40b
Fix #4132 - ignore purity of $this when checking for initialisation
2020-09-04 16:46:20 -04:00
orklah
f66d57f19d
add native return types ( #4116 )
...
* add native return types
* remove redundant phpdoc
2020-09-04 16:26:33 -04:00
Brown
66251d8d59
Improve tests a little
2020-09-03 16:51:43 -04:00
Brown
68ebef2a2e
Clean up immutable fix
2020-09-03 15:32:14 -04:00
Brown
8505ca2a23
Allow passing mutable object into immutable class to store reference
2020-09-03 15:28:09 -04:00
Brown
bd27e8b17b
Fix #4109 - detect duplicate match condition
2020-09-02 20:08:09 -04:00
Brown
28a107e620
Fix #4112 - allow slashes in docblock tag names
2020-09-02 19:39:59 -04:00
orklah
73f6fcde48
Short list syntax ( #4102 )
...
* Short list syntax
* revert unrelated CS
2020-09-02 00:17:41 -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
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
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
40e88095d8
Fix #4093 - prevent redundant condition in presence of positive-int
2020-08-31 10:02:23 -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
5759c12fa9
Support mixed type natively
2020-08-30 13:38:03 -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
2f82f312b2
Change version test
2020-08-30 12:44:01 -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
Tyson Andre
5f855a73d4
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
2020-08-29 13:36:56 -04:00
Brown
f9815d6e83
Fix modulo test
2020-08-29 11:47:34 -04:00
Brown
cf5aa5c5cd
Fix #4083 - namespace docblock method classes the proper way
2020-08-29 11:46:24 -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
5980ef58dc
Fix test
2020-08-28 14:07:01 -04:00
Brown
efe143a396
Fix #4077 - always track closure purity
2020-08-28 12:42:55 -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
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
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
57ac0a3310
Refine test for windows compat
2020-08-25 17:37:37 -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
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
4e10a0ed6f
Fix #4036 - add immutable annotations automatically too
2020-08-24 19:29:00 -04:00
Bruce Weirdan
ffd899ed3c
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
2020-08-24 18:02:39 -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
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
Matthew Brown
8a975d7c20
Don’t add pure annotation when closure is impure
2020-08-23 14:07:19 -04:00