Matthew Brown
4b7d4f9015
Don’t worry about !null either
2017-11-28 02:01:21 -05:00
Matthew Brown
018843fe65
Prevent empty type array when evaluating !falsy
2017-11-28 01:59:18 -05:00
Matthew Brown
e0cea0017c
Add more stringent checks when surfacing RedundantCondition
2017-11-28 01:40:55 -05:00
Matthew Brown
f27bd50abe
Add RedundantCondition issue, replacing FailedTypeResolution ( #344 )
...
* Group changes
* Don’t worry about vars defined before exiting
* Fix issues with vars defined in conditionals
* Add failing test
* Only add failed reconciliation flag if nothing could be salvaged
* Avoid notice when removing clauses
* Improve handling of loops
* Fix evaluation of binary op expressions
* Remove unset vars from outer context after loop
* Ignore RedundantCondition in some more configs
2017-11-28 00:46:41 -05:00
Matthew Brown
f16642dad2
Better switch analysis ( #343 )
...
* Experiment with good switch analysis
* Improve switch accuracy at expense of some processor cycles
* Evaluate switch case expression in case context
2017-11-28 00:25:21 -05:00
Matt Brown
8fff59f7de
Fix union of intersection types
2017-11-27 19:15:01 -05:00
Matt Brown
b8b1169a03
Consolidate intersection type checks in one place
2017-11-27 18:07:38 -05:00
Matt Brown
318e7c2366
Add workaround for interface instanceof issue
2017-11-27 17:39:25 -05:00
Matt Brown
bd22f9425c
Fix #175 - support interface intersection types with other interfaces
2017-11-27 16:49:59 -05:00
Matt Brown
a6f3781452
Fix #340 - give up with mixed type when accessing unknown key on objectlike
2017-11-27 12:01:23 -05:00
Matt Brown
8b0d99e28b
Fix extending of core classes that do bad things
2017-11-27 11:43:06 -05:00
Matthew Brown
afcbc113c9
Fix #228 , fix #336 by improving checking of inherited signatures
2017-11-26 16:03:17 -05:00
Matthew Brown
3b2a1d4a3e
Fix property type casing
2017-11-25 12:31:01 -05:00
Matthew Brown
18cf05e087
Always keep track of assigned var ids
2017-11-25 11:21:45 -05:00
Matthew Brown
18e68a60de
Fix #334 by allowing interfaces as foreach args to be correctly interpreted
2017-11-24 12:57:00 -05:00
Matthew Brown
c86e73ddb6
Always keep track of referenced var ids
...
which we can use for analysis elsewhere
2017-11-24 12:17:28 -05:00
Matthew Brown
4312ef380b
Fix issues found by improved Psalm checks
...
cc @TysonAndre, found with RedundantCondition checks
2017-11-24 12:10:30 -05:00
Matthew Brown
fd3de443b2
Update loop with union of existing types
2017-11-21 22:13:46 -05:00
Matthew Brown
df06c64b3e
Allow suppression of InvalidToString
2017-11-21 21:53:12 -05:00
Matthew Brown
e3b688b06d
Fix #316 - self resolves to proper class
2017-11-21 21:50:39 -05:00
Matthew Brown
0c917f632d
Also check for non-scalar types in reconciliation
2017-11-21 21:00:06 -05:00
Matthew Brown
b1a35d6a6e
Remove numeric types with !is_numeric check, fix #330
2017-11-21 20:58:08 -05:00
Matthew Brown
ad74563327
Improve handling of switch statements with default cases
2017-11-20 20:39:27 -05:00
Matthew Brown
f5f7849d3a
Fix erroneous merging of types
2017-11-20 20:06:00 -05:00
Matt Brown
60c9f1ca96
Ignore socket_select when assigning byref params
2017-11-20 17:34:32 -05:00
Matt Brown
a069cf4ea9
Don‘t turn a string into an array|string by accident
2017-11-20 17:10:05 -05:00
Matt Brown
0c2ea418e3
Fix #327 - prevent null array value from killing assignment
2017-11-20 16:19:40 -05:00
Matt Brown
a206e3dbc9
Pay attention to ignore_nullable_issues when comparing types
2017-11-20 13:31:30 -05:00
Matt Brown
f46fd0b79f
Fix array access on objects
2017-11-20 11:49:26 -05:00
Matt Brown
9081da21a6
Prevent false->bool resolution mismatch
2017-11-20 11:18:01 -05:00
Matthew Brown
aca23d236b
Check for ? after replacement
2017-11-20 00:37:45 -05:00
Matthew Brown
9d025fad8f
Only replace ? where appropriate
2017-11-20 00:32:40 -05:00
Matthew Brown
957600623c
Fix issue with byref template params leaking
2017-11-20 00:12:17 -05:00
Matthew Brown
ccc0583bf8
Fix issue with bad assign after array_pop/array_shift
2017-11-19 23:46:32 -05:00
Tyson Andre
cea5dca5dc
Allow using nullable shorthand (?
) within an array ( #326 )
2017-11-19 23:36:37 -05:00
Matthew Brown
ae799da8d0
Add root array var when updating array key type in if
2017-11-19 23:25:14 -05:00
Matthew Brown
381eb2157a
Avoid undefined notice in var comparison
2017-11-19 23:19:49 -05:00
Matthew Brown
5698b2d363
Update root var with more accurate object-like type
2017-11-19 22:28:52 -05:00
Matthew Brown
90bcd99eab
Fix issue where array_shift/array_pop didn’t mark array as modified
2017-11-19 21:36:09 -05:00
Matthew Brown
8b2df09f0f
Fix issue with object-like reassignment
2017-11-19 21:24:29 -05:00
Matthew Brown
3418eb494a
Always set a fallback mixed type on a mixed property fetch
2017-11-19 14:58:48 -05:00
Matthew Brown
8d62fc8ad1
Only update array type if it doesn’t have an object
2017-11-19 14:38:00 -05:00
Matthew Brown
f18616b2f9
Provide fallback if array keys not found
2017-11-19 14:23:39 -05:00
Matthew Brown
95429b7037
Fix invalid assignment to Union
2017-11-19 14:09:20 -05:00
Matthew Brown
942bc0a663
Add new MixedTypeCoercion issue, fixes #320
2017-11-19 13:42:48 -05:00
Matthew Brown
75b6e21801
Fix #315 - improve checking of object-like arrays in function params
2017-11-19 13:05:35 -05:00
Matthew Brown
5ff4badf33
Refactor array analysis to improve reliability and accuracy ( #325 )
2017-11-19 12:33:43 -05:00
Matthew Brown
1a39224abc
Fix issues that improved array checks found
2017-11-19 12:14:02 -05:00
Matt Brown
39baa00fd3
Fix issue with nested object-like array updating
2017-11-17 16:33:36 -05:00
Tyson Andre
1c25ca1a0c
Fix false positives, add tests of @psalm-seal-properties
( #318 )
2017-11-17 16:19:48 -05:00