Matt Brown
f3e0201a99
Treat $a ?? $b identically to isset($a) ? $a : $b
2020-11-25 14:34:05 -05:00
orklah
a3217265ce
null operations should return mixed results ( #4655 )
2020-11-22 09:06:03 -05:00
Matt Brown
f0ae0e5cb4
Break aparat type combiner
2020-11-21 18:11:29 -05:00
Matt Brown
b8f5d16e9f
Consolidate similar functionality
2020-11-07 00:58:20 -05:00
Matt Brown
45b3dce631
Break apart IfElseAnalyzer
2020-11-06 21:01:17 -05:00
Matt Brown
3359e7699a
Rename IfAnalyzer
2020-11-06 20:51:14 -05:00
Matt Brown
9daa534656
Ensure we flush out re-assigned vars also referenced
...
Fixes #4488
2020-11-06 12:51:41 -05:00
Matt Brown
b3ff107c20
Add functions
2020-11-04 23:34:38 -05:00
Matt Brown
3bde327f1b
Break up CommentAnalyzer
2020-11-04 23:25:08 -05:00
Matt Brown
f3c6d70a9b
Use more accurate type for div of ints
2020-11-04 22:39:27 -05:00
Matt Brown
eacc05e73f
Fix #2132 - get value of literal int division
2020-11-04 22:32:33 -05:00
Matt Brown
b35db3e523
Reorganise things a little
2020-11-03 16:15:54 -05:00
Matt Brown
3d4e77beb6
Fix int-mask-of expansion
2020-11-02 00:40:36 -05:00
Matt Brown
c0f6afbd87
Improve binary op || analysis for chain
2020-10-17 17:16:47 -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
516141a380
Rename ControlFlowGraph to more appropriate DataFlowGraph
2020-10-13 16:49:03 -04:00
Matt Brown
bb7d7132f7
Do arithmetic for preg_split arguments
2020-10-12 20:26:02 -04:00
orklah
10f2966dcb
return types ( #4311 )
...
* return types
* remove willReturn for void methods
2020-10-12 15:02:52 -04:00
Matt Brown
3b19913b44
Unbreak CI
2020-10-07 18:50:30 -04:00
Matt Brown
a9c145a725
Convert numeric literal strings to their int/float equivalents for numeric operations
2020-10-07 18:06:41 -04:00
Matt Brown
443025eab8
Fix addition of int and string type
2020-10-07 18:01:41 -04:00
Matt Brown
c8d4bafb85
Improve accuracy of messages
2020-10-07 17:26:37 -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
54ec83c5ee
Use better locations for errors
2020-10-07 13:53:35 -04:00
Matt Brown
639ae61284
Always check LHS of or condition before applying to RHS
2020-10-07 13:40:09 -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
Brown
19f88a2e31
Add improvements from unused variable checks
2020-09-28 00:45:02 -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
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
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
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
4e10a0ed6f
Fix #4036 - add immutable annotations automatically too
2020-08-24 19:29:00 -04:00
Brown
67f9adb33c
Allow adding pure annotations to functions
...
Ref #4036
2020-08-23 10:28:26 -04:00
Brown
e0f5595307
Fix #3932 - try to get assertions of negated expression if instant negation fails
2020-08-05 16:53:30 -04:00
Brown
57cd21346c
Fix #3914 - treat $i++ like $i = $i + 1
2020-07-31 11:26:54 -04:00
Brown
4a5f74c091
Add positive-int type
2020-07-26 15:51:55 -04:00
Brown
76bd5b6278
Refactor type comparison
2020-07-21 19:40:35 -04:00
Brown
f609a01497
Move static property fetch analyzer to own class
2020-06-18 11:53:24 -04:00
Brown
16af6a5773
Improve concat taint propagation
2020-05-23 01:11:16 -04:00
Matthew Brown
187b944680
Add faster taint analysis
2020-05-22 12:33:29 -04:00
Brown
2ec76f01c2
Fix redundant condition
2020-05-19 20:11:25 -04:00
Brown
27cb660377
Respect possibly-undefined array keys while merging
...
Fixes #3393
2020-05-19 20:10:01 -04:00