Commit a9501e9
Use narrowed iterable types in IntersectionType::isAcceptedBy() for array&callable
When an array&callable intersection is checked for acceptance, the raw
ArrayType(mixed, mixed) component was used, causing array<int> to
incorrectly accept array&callable. Now the array component uses the
narrowed key/value types (int<0,1>, object|non-falsy-string) so the
acceptance check correctly rejects incompatible array types.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>1 parent 3aa818d commit a9501e9
3 files changed
Lines changed: 54 additions & 1 deletion
File tree
- src/Type
- tests/PHPStan/Rules/Methods
- data
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
299 | 299 | | |
300 | 300 | | |
301 | 301 | | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
302 | 317 | | |
303 | | - | |
| 318 | + | |
304 | 319 | | |
305 | 320 | | |
306 | 321 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4017 | 4017 | | |
4018 | 4018 | | |
4019 | 4019 | | |
| 4020 | + | |
| 4021 | + | |
| 4022 | + | |
| 4023 | + | |
| 4024 | + | |
| 4025 | + | |
| 4026 | + | |
| 4027 | + | |
| 4028 | + | |
| 4029 | + | |
| 4030 | + | |
| 4031 | + | |
| 4032 | + | |
| 4033 | + | |
| 4034 | + | |
| 4035 | + | |
| 4036 | + | |
4020 | 4037 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
54 | 54 | | |
55 | 55 | | |
56 | 56 | | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
57 | 78 | | |
58 | 79 | | |
59 | 80 | | |
0 commit comments