Commit bc8479f
committed
Support intersecting object shapes in TypeCombinator
- Added ObjectShapeType merging logic in TypeCombinator::intersect() so that
two object shapes can be intersected by combining their properties
- Properties present in both shapes have their types intersected; if the
intersection is never, the whole result is never
- A property is optional in the result only if it is optional in both shapes
- Updated TypeCombinatorTest expectations and baseline for new instanceof count
- New regression test in tests/PHPStan/Analyser/nsrt/bug-13227.php1 parent 8b36ae3 commit bc8479f
File tree
4 files changed
+66
-3
lines changed- src/Type
- tests/PHPStan
- Analyser/nsrt
- Type
4 files changed
+66
-3
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1734 | 1734 | | |
1735 | 1735 | | |
1736 | 1736 | | |
1737 | | - | |
| 1737 | + | |
1738 | 1738 | | |
1739 | 1739 | | |
1740 | 1740 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| 29 | + | |
29 | 30 | | |
30 | 31 | | |
31 | 32 | | |
| |||
36 | 37 | | |
37 | 38 | | |
38 | 39 | | |
| 40 | + | |
39 | 41 | | |
40 | 42 | | |
41 | 43 | | |
| |||
1300 | 1302 | | |
1301 | 1303 | | |
1302 | 1304 | | |
| 1305 | + | |
| 1306 | + | |
| 1307 | + | |
| 1308 | + | |
| 1309 | + | |
| 1310 | + | |
| 1311 | + | |
| 1312 | + | |
| 1313 | + | |
| 1314 | + | |
| 1315 | + | |
| 1316 | + | |
| 1317 | + | |
| 1318 | + | |
| 1319 | + | |
| 1320 | + | |
| 1321 | + | |
| 1322 | + | |
| 1323 | + | |
| 1324 | + | |
| 1325 | + | |
| 1326 | + | |
| 1327 | + | |
| 1328 | + | |
| 1329 | + | |
| 1330 | + | |
| 1331 | + | |
| 1332 | + | |
| 1333 | + | |
| 1334 | + | |
| 1335 | + | |
| 1336 | + | |
1303 | 1337 | | |
1304 | 1338 | | |
1305 | 1339 | | |
| |||
| 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 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4616 | 4616 | | |
4617 | 4617 | | |
4618 | 4618 | | |
4619 | | - | |
4620 | | - | |
| 4619 | + | |
| 4620 | + | |
4621 | 4621 | | |
4622 | 4622 | | |
4623 | 4623 | | |
| |||
0 commit comments