1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-15 10:57:08 +01:00
Commit Graph

298 Commits

Author SHA1 Message Date
Matt Brown
66780716aa Fix #3625 - getIterator call is used inside loop 2020-10-20 10:59:09 -04:00
Matt Brown
3803bbfce0 Fix #4368 - improve handling of try with finally 2020-10-20 09:07:10 -04:00
Matt Brown
1a6b684993 Fix #4366 - possibly-undefined vars in finally block should not error 2020-10-19 09:56:38 -04:00
Matt Brown
3c29ffd0b7 Ignore just-coerced vars 2020-10-17 23:35:24 -04:00
Matt Brown
b646414304 Prevent unnecessary assignments 2020-10-17 18:44:42 -04:00
Matt Brown
055fe551c1 Suppress errors from fake statements 2020-10-17 18:35:55 -04:00
Matt Brown
9502e51a08 Fix reversed negation check 2020-10-17 17:46:00 -04:00
Matt Brown
c0f6afbd87 Improve binary op || analysis for chain 2020-10-17 17:16:47 -04:00
Matt Brown
559abb7b6a Fix style 2020-10-17 14:50:14 -04:00
orklah
ceaaa39ec3
improve phpdoc (#4352) 2020-10-17 12:36:44 -04:00
Matt Brown
9f29e77adc Fix #4354 - allow assignments on RHS of || in if conditional 2020-10-17 12:29:57 -04:00
Matt Brown
083cc29c04 Fix #4347 - fix combinatorial expansion when negating if conditions 2020-10-16 10:23:15 -04:00
orklah
ffe7874906
Misc improvements (#4314)
* extract the operation out of the loop when possible

* remove unnecessary interfaces when already inherited in parent

* simplify expressions

* avoid using alias functions

* redundant phpdoc

* unused imports
2020-10-15 13:23:35 -04:00
Matt Brown
8d2e88ef41 Fix #4333 - don’t get tripped up on try with no catches 2020-10-15 10:15:55 -04:00
Matt Brown
724b25b918 Change control_flow_graph to data_flow_graph 2020-10-13 17:28:12 -04:00
Matt Brown
516141a380 Rename ControlFlowGraph to more appropriate DataFlowGraph 2020-10-13 16:49:03 -04:00
Matt Brown
1ae9a6127e Fix #4315 - prevent crash when setting unknown property in finally 2020-10-13 08:32:26 -04:00
orklah
10f2966dcb
return types (#4311)
* return types

* remove willReturn for void methods
2020-10-12 15:02:52 -04:00
Matt Brown
e9b520d72d Ignore precondition issues in loop 2020-10-07 20:24:50 -04:00
Matt Brown
549b200aa7 Remove mixed assignment issue 2020-10-04 17:53:26 -04:00
Matt Brown
5bcd1bbb75 4.x - add support for get_debug_type function
Ref #4089
2020-10-02 19:15:47 -04:00
Matt Brown
74934ffdbb 4.x - rename GetClassT to TDependentGetClass 2020-10-02 18:47:23 -04:00
Matt Brown
35081c0d21 Ensure catch variables are marked as used 2020-09-30 13:51:02 -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
1afbce82ca Ensure loop marks vars as possibly assigned 2020-09-27 17:50:48 -04:00
Brown
4f28b38556 Fix unused var in finally false-positive 2020-09-25 10:20:22 -04:00
Brown
d52d7ef6aa Add extra loops for more reliable analysis 2020-09-25 00:59:58 -04:00
Brown
3593a120f3 Add missing = true 2020-09-22 01:10:11 -04:00
Brown
275c6bf4e7 Propagate has_returned flag 2020-09-22 00:43:13 -04:00
Brown
3015aca2df Fix fudging var 2020-09-21 16:23:44 -04:00
Brown
b501db6dd2 Skip currently-failing undefined variable test 2020-09-21 16:01:14 -04:00
Brown
cdb2b5caf6 Be a little bit more robust in finally handling 2020-09-21 15:37:10 -04:00
Brown
3e0f449163 Detect more issues inside finally block 2020-09-21 15:16:19 -04:00
Brown
fe94ae0603 Make sure to union try-set vars 2020-09-21 14:33:34 -04:00
orklah
24a38f21ce
Use array destructuring when possible (#4221)
* list usage

* fix inversion
2020-09-20 12:55:38 -04:00
orklah
a9a364e363
Misc improvements (#4216)
* misc changes

* fix CI
2020-09-20 08:55:28 -04:00
Brown
c4450b930c Fix various things 2020-09-13 22:39:03 -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
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
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
orklah
f66d57f19d
add native return types (#4116)
* add native return types

* remove redundant phpdoc
2020-09-04 16:26:33 -04:00
Brown
92239add4d Add some backwards-incompatible changes for 4.x 2020-08-30 11:44: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
988e17f11d Make clause fully immutable 2020-08-26 15:35:29 -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
2b060b75d3 Fix #4052 - foreach over an iterable is impure 2020-08-25 11:24:57 -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
Brown
12798d1cab Prevent access to possibly unset var 2020-08-17 15:25:13 -04:00
Brown
b6d9ee5eb1 Fix things 2020-08-07 12:16:35 -04:00
Brown
e61765ff9b Fix #3954 - catch ComplicatedExpressionException with added workaround 2020-08-07 08:20:35 -04:00
Brown
76bd5b6278 Refactor type comparison 2020-07-21 19:40:35 -04:00
Brown
3c9028c182 Fix #3808 - allow detection of paradoxes in switch condition function calls 2020-07-14 10:51:12 -04:00
Brown
bf7bcc0dca Fix #3779 - allow ParadoxicalCondition of default to be suppressed 2020-07-08 14:51:20 -04:00
Brown
1b498e6dae Remove unused variable 2020-07-06 17:41:07 -04:00
Brown
eb3ce8d368 Remove unused code 2020-07-06 15:39:52 -04:00
Brown
44d7f51857 Generalise init vars inside for loops
Ref #3085
2020-07-03 11:13:44 -04:00
Brown
1745f5cafa Fix too-long line 2020-07-02 15:32:13 -04:00
Brown
0c582e9993 Fix #3685 - improve handling of if conditionals inside do 2020-07-02 13:59:59 -04:00
Brown
dd25b81d3a Fix #3670 - taint mixed foreach access 2020-06-24 19:16:30 -04:00
Brown
bbada7ba8d Ensure correct vars are used 2020-06-15 17:16:12 -04:00
Brown
05cb39814c Improve performance of long switch checks 2020-06-15 16:23:19 -04:00
Brown
9ca6c868b7 Fix #3563 - add workaround for == true 2020-06-12 10:58:44 -04:00
Matthew Brown
c9ee691595
Fix suppression 2020-06-04 09:55:32 -04:00
Brown
fd74d3284d Add support for PHPParser 4.5.0 2020-06-03 14:58:08 -04:00
Brown
ef53ee3a3b Fix crash on aliased exception
Ref #3465
2020-05-27 08:09:58 -04:00
Brown
0b2da18f1e Break up StatementsAnalyzer 2020-05-19 12:56:30 -04:00
Brown
5ee1487a01 Make ExpressionAnalyzer more beautiful 2020-05-18 15:13:27 -04:00
Matthew Brown
f6342a40d9 Remove unnecesary conditional check for do
Fixes #3378
2020-05-16 16:32:36 -04:00
Brown
3554aa4435 Fix crash newly introduced 2020-05-11 09:34:07 -04:00
Brown
8f2f2617d4 Improve refactor 2020-05-10 22:45:01 -04:00
Brown
5f4d162dd5 Break out type expander into separate class 2020-05-10 22:39:18 -04:00
Matthew Brown
4b388a2951 Fix ref 2020-05-10 11:35:35 -04:00
Brown
55222573ea Mark as possibly-undefined any variable that wasn’t present when the loop began
Fixes #3332
2020-05-10 11:17:50 -04:00
Brown
9e6797d297 Add protection from ComplicatedExpression 2020-04-30 22:23:07 -04:00
Brown
189cd2bdc8 Fix key stringg 2020-04-27 00:50:07 -04:00
Brown
755ada9114 Fix #3234 - infer iterator key types properly 2020-04-27 00:41:34 -04:00
Brown
e1c6fcc707 Fix #3215 - suppress PossiblyUndefinedMethod in synthetic call 2020-04-24 00:11:32 -04:00
Brown
b0455adced Fix #3177 - prevent crash by using inherited templates 2020-04-18 11:48:22 -04:00
Brown
e17cfd8dba Fix #3125 - only apply clauses where applicable 2020-04-12 21:50:10 -04:00
Brown
d530fce4b3 Fall through with PossiblyInvalidIterator issue 2020-04-11 11:17:54 -04:00
Brown
556d5625b5 Prevent Throwable being intersected with itself 2020-04-10 00:10:31 -04:00
Brown
b2e010b431 Fix #3102 - identify issues with possibly-mixed output 2020-04-08 14:07:09 -04:00
Brown
550ba0a4c9 Compare to real outer context, not if one
Fixes #3091
2020-04-07 15:13:17 -04:00
Brown
61c979136f Fix #3091 - simplify elseif negated clauses where possible 2020-04-07 13:04:24 -04:00
Brown
067104e170 Fix #3084 - keep track of upper and lower bounds of inferred template types 2020-04-07 00:13:56 -04:00
Matthew Brown
b46e147735 Add some limits on switch case assertion calculation
Ref #2728
2020-03-30 00:20:00 -04:00
Matthew Brown
86a89b2d27 Fix #3034 - expand out while expressions for more accurate variable initialisation 2020-03-28 18:22:08 -04:00
Matthew Brown
47c1470e3b Refactor reference checks to use more appropriate properties 2020-03-28 16:30:56 -04:00
Tyson Andre
e560858b23
Fix grammar nit in "is can never happen" message (#3025)
Should either be "is impossible" or "can never happen"
2020-03-27 17:32:49 -04:00
Brown
971ae50bea Do prep work for #3024 - improve handling of absent class references 2020-03-26 12:35:27 -04:00
Matthew Brown
c85fa9083d Fix #2915 - prevent "if (true)" and similar 2020-03-15 22:23:31 -04:00
Matthew Brown
b6380ae595 Fix false-positives around unevaluated code 2020-03-15 14:43:05 -04:00
Matthew Brown
6c7f89b0ab Fix #2920 - track unevaluated code after nested returns 2020-03-15 14:31:41 -04:00
Matthew Brown
43189b3d55 Allow types to be traversed 2020-03-14 23:54:51 -04:00
Matthew Brown
54d38e562f Fix #2970 - use correct unreferenced vars when analysing do 2020-03-13 11:41:17 -04:00