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