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

3826 Commits

Author SHA1 Message Date
Matt Brown
5246841b12
Fix tests 2021-01-29 11:46:14 +01:00
Matt Brown
a4b56c9292
Simplify tainted output a bit, removing duplicate paths 2021-01-29 11:46:13 +01:00
Matt Brown
a7cc439db0
Don’t propagate taints to child constructor args 2021-01-29 11:46:13 +01:00
Matt Brown
0b14b6968e
Fix #4472 - if something flows into a byref var it’s used 2021-01-29 11:46:13 +01:00
Lukas Reschke
c42927c6e4
Add SARIF as report output (#4582)
https://docs.oasis-open.org/sarif/sarif/v2.0/sarif-v2.0.html
2021-01-29 11:46:13 +01:00
Matt Brown
2c69618347
Break out TaintedInput issues into a lot of separate ones 2021-01-29 11:46:13 +01:00
Dusk
4e7bd1e39b
Allow named arguments to variadic functions (#4575)
Closes #4563
2021-01-29 11:46:11 +01:00
Lukas Reschke
ff55dba130
Add sinks for popen and proc_open (#4572)
User input in those two functions could lead to a RCE.

popen: https://www.php.net/manual/en/function.popen.php
proc_open: https://www.php.net/manual/en/function.proc-open.php
2021-01-29 11:46:11 +01:00
orklah
2f368244a4
Detect trying to access to a list with a negative offset (#4552) 2021-01-29 11:46:11 +01:00
Matt Brown
4fff920952
Fix #4529 - allow unsetting with complex array key 2021-01-29 11:46:10 +01:00
Matt Brown
4a8c98257e
Add closure-use termination for byref flows 2021-01-29 11:46:10 +01:00
Matt Brown
ad840e4b7a
Fix #4547 - mark unused uses 2021-01-29 11:46:10 +01:00
Matt Brown
c1d57ba6a5
Uses by ref should be assigned that way 2021-01-29 11:46:10 +01:00
Matt Brown
5f01ea788a
Fix #4544 - improve handling of get_class in match 2021-01-29 11:46:10 +01:00
Matt Brown
5219932408
Fix #4545 - allow intersections in more places 2021-01-29 11:46:10 +01:00
Matt Brown
63bf00513b
Split out trait template tests 2021-01-29 11:46:09 +01:00
Matt Brown
8392fb429c
Fix #4540 - use correct method when simulating property setting 2021-01-29 11:46:09 +01:00
Matt Brown
e8c755c7c0
Fix #4537 - use more rigorous inerhitance for return and param types 2021-01-29 11:46:09 +01:00
Matt Brown
bd20313a14
Use better way to determine which signture to use
Fixes #4524
2021-01-29 11:46:09 +01:00
Matt Brown
fb5ee1e46d
Bind lower bounds to upper bounds as well when no upper bound can be inferred
Ref #4485
2021-01-29 11:46:08 +01:00
Matt Brown
e624f972dd
Fix #4524 - do better template param inheritance 2021-01-29 11:46:08 +01:00
Matt Brown
f3b6846c70
Fix #4527 - improve interpolated string types 2021-01-29 11:46:08 +01:00
Adrien LUCAS
9ab0ab9472
Add a proxy capability to the flow annotation (#4495)
* Add a `passthru` capability to the flow annotation

* Fix passthru-calls type

* Fix types and rename to proxy

* Allow to proxy a method

Co-authored-by: Matthew Brown <github@muglug.com>
2021-01-29 11:46:07 +01:00
Matt Brown
d07a8bb4a5
Add descendant variables for closure uses
Fixes #4522
2021-01-29 11:46:07 +01:00
Matt Brown
1ad65fb899
Fix #4517 - track type contradiction issues in match expressions 2021-01-29 11:46:07 +01:00
Matt Brown
9fd4a24c55
Fix #4516 - treat exit() as the empty type 2021-01-29 11:46:07 +01:00
Matt Brown
ec9d8e6700
Fix #4519 - prevent crash with empty match 2021-01-29 11:46:07 +01:00
Matt Brown
e2eee4cb46
Break apart complex method 2021-01-29 11:46:07 +01:00
Matt Brown
fbafb9e97f
Fix #4509 - treat expression-derived constants as mixed 2021-01-29 11:46:06 +01:00
Matt Brown
36af6d70d2
Fix tests 2021-01-29 11:46:05 +01:00
Matt Brown
b68995582e
Preserve reconciled taints for all but non-string scalar types 2021-01-29 11:46:05 +01:00
Matt Brown
fb5e30850a
Fix #4503 - don’t ignore assertions on possibly-null mixed 2021-01-29 11:46:05 +01:00
Matt Brown
64ade75d13
Get rid of version test, which is dumb 2021-01-29 11:46:04 +01:00
Axel H
2f10ad0c24
Fix type inference when unpacking typed iterables (#4487)
* Add test for unpacking typed iterables

* Fix type inference when unpacking typed iterables into arrays

* Fix possibly undefined array offset
2021-01-29 11:46:04 +01:00
Matt Brown
578e65820a
Ensure we flush out re-assigned vars also referenced
Fixes #4488
2021-01-29 11:46:04 +01:00
Matt Brown
57cd29ee9d
Put assignment-in-conditional tests in their own file 2021-01-29 11:46:04 +01:00
Matt Brown
1389dc6adf
Allow opt-in to strict return type checking 2021-01-29 11:46:03 +01:00
Matt Brown
3483c59d9b
Fix #4479 - use correct keys in message 2021-01-29 11:46:03 +01:00
Matt Brown
d688d5fd74
Add support for @return never 2021-01-29 11:45:02 +01:00
Matt Brown
8b44459c7c
Fix overeager inference 2021-01-29 11:45:02 +01:00
Matt Brown
d4846b14e6
Reorganise things a little 2021-01-29 11:45:02 +01:00
Matt Brown
e3a352d287
Fix int-mask-of expansion 2021-01-29 11:45:02 +01:00
Matt Brown
2a7feef5f6
Fix #4466 use better differentiation for class_exists second param 2021-01-29 11:45:01 +01:00
Matt Brown
c07378a713
Fix #4467 - variables are only the same if they were set in the same location 2021-01-29 11:45:01 +01:00
Matt Brown
badf0855ce
Invalidate child methods when signature changes 2021-01-29 11:45:01 +01:00
Matt Brown
9d35e3c251
Fix #4464 - bust cache when Psalm’s version changes, not just composer’s 2021-01-29 11:45:01 +01:00
Matt Brown
b217916f37
Use better inference for getAttributes return type
Fixes #4367
2021-01-29 11:45:00 +01:00
Matt Brown
0ea0604cf3
Fix #4453 - sanitise @extends types before attempting to parse 2021-01-29 11:44:36 +01:00
Matt Brown
881068d5c0
Detect when targets are incorrectly targeted 2021-01-29 11:44:36 +01:00
Matt Brown
98b755fb6c
Add support for int-mask<...> and int-mask-of<...> 2021-01-29 11:44:35 +01:00
Matt Brown
fb81fa13f4
Ensure Stringable is always available to tests that need it 2021-01-29 11:44:35 +01:00
Matt Brown
9f87b99fac
Fix #4435 - ensure casts are always flow-sensitive 2021-01-29 11:44:35 +01:00
Matt Brown
ab90097baf
Remove subpar test 2021-01-29 11:44:35 +01:00
Matt Brown
3ebdb3b952
Use more accurate comparison for non-empty-lists 2021-01-29 11:44:34 +01:00
Matt Brown
951c3715f7
Fix tests 2021-01-29 11:44:33 +01:00
Matt Brown
35fd64bf74
Fix test type 2021-01-29 11:44:33 +01:00
Matt Brown
106747487b
Fix #4429 - any class with a __toString method in PHP8 assumed to implement Stringable 2021-01-29 11:44:33 +01:00
Matt Brown
7f975045f4
Fix #4422 - be aware of nested template params 2021-01-29 11:44:33 +01:00
Matt Brown
e440baf671
Improve algebra handling a little better 2021-01-29 11:44:33 +01:00
Matt Brown
870d07ba51
Fix #4418 - improve try analysis for mixed, too 2021-01-29 11:44:32 +01:00
Matt Brown
c16d779bca
Fix #4397 - allow offsetGet on inside isset 2021-01-29 11:44:32 +01:00
Matt Brown
e8b3f55013
Track final-ness of class when evaluating trait returns 2021-01-29 11:44:31 +01:00
Matt Brown
5aee8e77d5
Fix #4414 - allow multiple @psalm-assert-if-true on same var 2021-01-29 11:44:31 +01:00
Matt Brown
eef4ea018b
Empty checks variables are really falsy checks 2021-01-29 11:44:31 +01:00
Matt Brown
a57d62b71b
Add logic to weed out unnecessary clauses 2021-01-29 11:44:30 +01:00
Matt Brown
3ff2116c17
Add basic support for PHP attributes
Ref #4367 - supports creation and argument checks
2021-01-29 11:44:30 +01:00
Matt Brown
e90b595b92
Break apart ReflectorVisitor 2021-01-29 11:44:29 +01:00
Matt Brown
67859ed19b
Invalidate signature types when use changes 2021-01-29 11:41:13 +01:00
Matt Brown
3731255f6f
Fix #4386 - fix issues with property promotion 2021-01-29 11:41:13 +01:00
feek
d1b7cf6860
feature: ensure universal object crate class exists (#4375) 2021-01-29 11:41:13 +01:00
Matt Brown
7df404bfb5
Fix #4374 - prevent paradox and allow Psalm to understand more assignments in conditionals 2021-01-29 11:41:13 +01:00
Matt Brown
26352d0e39
Fix #3625 - getIterator call is used inside loop 2021-01-29 11:41:12 +01:00
Matt Brown
d7a0b718ec
Fix #4372 - count implicitly-used short-closure vars as used 2021-01-29 11:41:12 +01:00
Matt Brown
b3e423fd03
Fix #4368 - improve handling of try with finally 2021-01-29 11:41:12 +01:00
Niclas van Eyk
5f019cef53
Initial proposal for psalm-require-{extends, implements} (#4361)
* initial implementation of psalm-require-extends

* Added @psalm-require-implements

* Added shortcode for ExtensionRequirementViolation

* Docs & cofig entries for @pasalm-require-{implements,extends}

* Added requirement violations to issues.md
2021-01-29 11:41:10 +01:00
Matt Brown
dab7da02bd
Fix #4366 - possibly-undefined vars in finally block should not error 2021-01-29 11:39:59 +01:00
Matt Brown
481cf84b94
Don’t overwrite true flag 2021-01-29 11:39:58 +01:00
Matt Brown
74d6f166c1
Be more explicit about negation 2021-01-29 11:39:58 +01:00
Matt Brown
8043683f26
Ignore just-coerced vars 2021-01-29 11:39:58 +01:00
Matt Brown
596811cdc1
Suppress errors from fake statements 2021-01-29 11:39:58 +01:00
Matt Brown
c5c177a80a
Improve binary op || analysis for chain 2021-01-29 11:39:57 +01:00
orklah
62861e79d8
improve phpdoc (#4352) 2021-01-29 11:39:57 +01:00
Matt Brown
596e71d6aa
Unskip now-working tests 2021-01-29 11:39:57 +01:00
Matt Brown
2d8d1b9bf7
Fix #4354 - allow assignments on RHS of || in if conditional 2021-01-29 11:39:57 +01:00
Matt Brown
da79106a6a
Fix #4349 - improve types for suggested unions 2021-01-29 11:39:57 +01:00
Matt Brown
4f60d2dd4d
Fix #4347 - fix combinatorial expansion when negating if conditions 2021-01-29 11:39:56 +01:00
Matt Brown
460c4a2c3e
Fix #4333 - don’t get tripped up on try with no catches 2021-01-29 11:39:56 +01:00
Matt Brown
c43c29880c
Fix #4336 - don’t merge sources twice for null coalesce 2021-01-29 11:39:56 +01:00
Matt Brown
05f2d01cb6
Fix #4326 - Prevent later remapping of properties 2021-01-29 11:39:55 +01:00
Matt Brown
1915f34959
Fix #4326 - prevent more mapping than necessary 2021-01-29 11:39:55 +01:00
Matt Brown
84126fbbca
Fix #4327 - make sure loop always returns 2021-01-29 11:39:55 +01:00
Marcus Bointon
fb505df807
Fix preg_match_all stub (#4325)
* preg_match_all can return false

* Test for preg_match_all returning false

* Fix test

* Add @psalm-ignore-falsable-return
2021-01-29 11:39:55 +01:00
Matt Brown
8d1de7757d
Use more accurate arguments count 2021-01-29 11:39:55 +01:00
Matt Brown
c00bc4ee51
Add better support for get_debug_type 2021-01-29 11:39:54 +01:00
Matt Brown
0f8b017384
Prevent features pre-php-8 2021-01-29 11:39:54 +01:00
Matt Brown
4acaf40f26
Avoid crash when callable type is missing 2021-01-29 11:39:54 +01:00
Pol Dellaiera
2b437ad672
Add more standard iterators (#4320)
* Add CachingIterator, LimitIterator, InfiniteIterator, CallbackFilterIterator, NoRewindIterator.

Signed-off-by: Pol Dellaiera <pol.dellaiera@protonmail.com>

* Add related Iterator tests.

Signed-off-by: Pol Dellaiera <pol.dellaiera@protonmail.com>
2021-01-29 11:39:54 +01:00
Matt Brown
399a7bfd11
Fix #4315 - prevent crash when setting unknown property in finally 2021-01-29 11:39:54 +01:00
Matt Brown
278a306681
Do arithmetic for preg_split arguments 2021-01-29 11:39:53 +01:00
Matt Brown
78380c591b
Fix #4274 - don’t ignore mixed union in array_shift operation 2021-01-29 11:39:53 +01:00
orklah
6e3546d900
return types (#4311)
* return types

* remove willReturn for void methods
2021-01-29 11:39:53 +01:00
Matt Brown
bb42c12d7b
Fix #4310 - prevent literal class check on union 2021-01-29 11:39:53 +01:00
Matt Brown
eb89e0142f
Fix #4309 - improve reuse of callmap callable inference 2021-01-29 11:39:52 +01:00
Matt Brown
68526c39ad
Add better return type for preg_split 2021-01-29 11:39:52 +01:00
Matt Brown
0934988ec7
Don’t merge array and Traversable to iterable when there are intersections 2021-01-29 11:39:52 +01:00
Matt Brown
aaed95a0a9
4.x - Prevent passing empty array to max or min 2021-01-29 11:39:52 +01:00
Matt Brown
6310aff7e5
4.x - skip Stringable test if not in PHP 8.0 2021-01-29 11:39:52 +01:00
Matt Brown
056f546a38
4.x - detect falty !is_resource checks 2021-01-29 11:39:51 +01:00
Matt Brown
01781af718
Fix #4306 - negating positive-numeric is useless, avoid crash 2021-01-29 11:39:51 +01:00
Matt Brown
4f5a3ca82b
Fix #4299 - only allow unpacking for the zeroeth-indexed element 2021-01-29 11:39:51 +01:00
Matt Brown
6bd6a4cbc3
Ignore precondition issues in loop 2021-01-29 11:39:51 +01:00
Matt Brown
f1be27b18a
Fix addition of int and string type 2021-01-29 11:39:50 +01:00
Matt Brown
49dcec6d4a
Fix #4287 - intersection of regular arrays should not result in crash 2021-01-29 11:39:50 +01:00
Matt Brown
3f5cb4db1f
Warn about impossible/redundant conditions in RHS of || 2021-01-29 11:39:50 +01:00
Matt Brown
d1b81e9b80
Improve error message 2021-01-29 11:39:50 +01:00
Matt Brown
2a755cce8c
Always check LHS of or condition before applying to RHS 2021-01-29 11:39:49 +01:00
feek
a19f738967
feature: universal object crates (#3948)
* feature: universal object crates

* docs: document universal object crate config option

Co-authored-by: Matthew Brown <github@muglug.com>
2021-01-29 11:39:48 +01:00
Matt Brown
580d3e2b61
Fix tests 2021-01-29 11:39:48 +01:00
Matt Brown
9bbb11599a
4.x - change/remove some default config values 2021-01-29 11:39:48 +01:00
Matt Brown
ca03d84776
Remove by-ref 2021-01-29 11:39:48 +01:00
Matt Brown
67d995b67f
4.x - Prevent AfterFunctionCallAnalysisInterface from rewriting return types 2021-01-29 11:39:47 +01:00
Matt Brown
ffcae7c7a9
Add support for Stringable 2021-01-29 11:39:47 +01:00
Matt Brown
15f51a3a0c
Ensure PHP 8 continuation of 7.4 method signature features 2021-01-29 11:39:47 +01:00
Matt Brown
7247dbae61
Skip faulty documentation key 2021-01-29 11:39:47 +01:00
Matt Brown
956199c688
4.x - add support for the nullsafe operator 2021-01-29 11:39:47 +01:00
Matt Brown
6dc45bbcb7
Fix @no-named-arguments more 2021-01-29 11:39:46 +01:00
Matt Brown
cb5630d156
4.x - Support named arguments
Ref #4089
2021-01-29 11:39:45 +01:00
Matt Brown
510f1e75cd
Promoted properties are always initialized 2021-01-29 11:39:45 +01:00
Matt Brown
613ce96582
Support property type promotion ref #4089 2021-01-29 11:39:45 +01:00
Matt Brown
f63a40f69b
Fix #4266 - prevent OOM when analysing closure unioned with invokable class 2021-01-29 11:39:44 +01:00
Matt Brown
a4b6cb83db
Fix #4264 - prevent crash when analysing file with duplicate classes 2021-01-29 11:39:44 +01:00
Matt Brown
a6e3d46d62
Treat func_get_args as using function params 2021-01-29 11:39:44 +01:00
Matt Brown
63953d5676
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
2021-01-29 11:39:44 +01:00
Matt Brown
5351a07cea
Fix analysis when there’s a break in a loop after a reassignment 2021-01-29 11:39:43 +01:00
Brown
5e8e183667
Add improvements from unused variable checks 2021-01-29 11:39:43 +01:00
Brown
ee2149342e
Add more unused variable tests 2021-01-29 11:39:43 +01:00
Brown
cf2872c285
Ensure loop marks vars as possibly assigned 2021-01-29 11:39:43 +01:00
Bruce Weirdan
ecec9dd040
Fixes crash due to class/filename mismatch (#4247)
Introduced in 56cddd16bf
2021-01-29 11:39:43 +01:00
Brown
f5019d92e2
Fix unused var in finally false-positive 2021-01-29 11:39:43 +01:00
Brown
1893147aed
Prevent duplicate switch return types 2021-01-29 11:39:43 +01:00
Brown
5177511a72
Fix test result 2021-01-29 11:39:42 +01:00
Brown
999a8aa4a8
Move taint graph functionality into its own object 2021-01-29 11:39:42 +01:00
Brown
d666d93950
Add more tests for unused variables 2021-01-29 11:39:42 +01:00
orklah
e3e5a55907
unused use statements (#4228) 2021-01-29 11:39:42 +01:00
Brown
d40cc0b35b
Skip currently-failing undefined variable test 2021-01-29 11:39:41 +01:00
Brown
734b9c3833
Detect more issues inside finally block 2021-01-29 11:39:41 +01:00
Brown
0856354b48
Rename TaintGraph to ControlFlowGraph because it’s about to do more 2021-01-29 11:39:41 +01:00
Brown
364f8f1a01
Add back necessary suppression 2021-01-29 11:39:40 +01:00
Brown
c288dac4de
Fix tests 2021-01-29 11:39:40 +01:00
Brown
dbe4b4c708
Localise taint analysis better 2021-01-29 11:39:40 +01:00
Brown
291c067dc5
Rename Taint object to TaintGraph 2021-01-29 11:39:40 +01:00
orklah
9f00b8536a
fix test on windows (#4225) 2021-01-29 11:39:40 +01:00
orklah
f1aba254be
Use array destructuring when possible (#4221)
* list usage

* fix inversion
2021-01-29 11:39:39 +01:00
Brown
c0bf0a8fa7
Fix #4198 - make analysis of class-string property assignments more robust 2021-01-29 11:39:39 +01:00
orklah
b559951bf4
replace deprecated methods with their equivalent (#4217) 2021-01-29 11:39:39 +01:00
orklah
3652d51275
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
2021-01-29 11:39:39 +01:00
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