Commit ecd37c8
Fix phpstan/phpstan#12597: variable might not be defined after in_array check
- Added subtype matching for conditional expressions in MutatingScope::processSpecifiedTypes
- After exact-match conditional resolution, a second pass checks if specified types
are subtypes of guard types for maybe-defined variables
- Limited to Variable targets with Maybe certainty to avoid interfering with type narrowing
- New regression test in tests/PHPStan/Rules/Variables/data/bug-12597.php1 parent ba4c9e4 commit ecd37c8
File tree
3 files changed
+57
-0
lines changed- src/Analyser
- tests/PHPStan/Rules/Variables
- data
3 files changed
+57
-0
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3229 | 3229 | | |
3230 | 3230 | | |
3231 | 3231 | | |
| 3232 | + | |
| 3233 | + | |
| 3234 | + | |
| 3235 | + | |
| 3236 | + | |
| 3237 | + | |
| 3238 | + | |
| 3239 | + | |
| 3240 | + | |
| 3241 | + | |
| 3242 | + | |
| 3243 | + | |
| 3244 | + | |
| 3245 | + | |
| 3246 | + | |
| 3247 | + | |
| 3248 | + | |
| 3249 | + | |
| 3250 | + | |
| 3251 | + | |
| 3252 | + | |
| 3253 | + | |
| 3254 | + | |
| 3255 | + | |
| 3256 | + | |
| 3257 | + | |
3232 | 3258 | | |
3233 | 3259 | | |
3234 | 3260 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
905 | 905 | | |
906 | 906 | | |
907 | 907 | | |
| 908 | + | |
| 909 | + | |
| 910 | + | |
| 911 | + | |
| 912 | + | |
| 913 | + | |
| 914 | + | |
| 915 | + | |
| 916 | + | |
908 | 917 | | |
909 | 918 | | |
910 | 919 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
0 commit comments