Repository navigation
Commit 56180bc
authored
[ty] Specialize instance members once (#29043)
## Summary
We apply a generic class's specialization once when looking up an
instance attribute. MRO lookup already specializes each member in its
defining class, but the outer lookup applied the specialization again.
When type arguments refer to the class's own parameters, that could turn
`list[T]` into `list[list[T]]` or undo a swap of `T` and `U`.
Remove the redundant specialization and cover nested and swapped type
arguments with both legacy and PEP 695 syntax.1 parent aa9a1ff commit 56180bc
3 files changed
Lines changed: 48 additions & 5 deletions
File tree
- crates/ty_python_semantic
- resources/mdtest/generics
- legacy
- pep695
- src/types
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2448 | 2448 | | |
2449 | 2449 | | |
2450 | 2450 | | |
| 2451 | + | |
| 2452 | + | |
| 2453 | + | |
| 2454 | + | |
| 2455 | + | |
| 2456 | + | |
| 2457 | + | |
| 2458 | + | |
| 2459 | + | |
| 2460 | + | |
| 2461 | + | |
| 2462 | + | |
| 2463 | + | |
| 2464 | + | |
| 2465 | + | |
| 2466 | + | |
| 2467 | + | |
| 2468 | + | |
| 2469 | + | |
| 2470 | + | |
| 2471 | + | |
| 2472 | + | |
| 2473 | + | |
| 2474 | + | |
2451 | 2475 | | |
2452 | 2476 | | |
2453 | 2477 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1733 | 1733 | | |
1734 | 1734 | | |
1735 | 1735 | | |
| 1736 | + | |
| 1737 | + | |
| 1738 | + | |
| 1739 | + | |
| 1740 | + | |
| 1741 | + | |
| 1742 | + | |
| 1743 | + | |
| 1744 | + | |
| 1745 | + | |
| 1746 | + | |
| 1747 | + | |
| 1748 | + | |
| 1749 | + | |
| 1750 | + | |
| 1751 | + | |
| 1752 | + | |
| 1753 | + | |
| 1754 | + | |
1736 | 1755 | | |
1737 | 1756 | | |
1738 | 1757 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2274 | 2274 | | |
2275 | 2275 | | |
2276 | 2276 | | |
2277 | | - | |
2278 | | - | |
2279 | | - | |
2280 | | - | |
2281 | | - | |
| 2277 | + | |
| 2278 | + | |
| 2279 | + | |
| 2280 | + | |
| 2281 | + | |
2282 | 2282 | | |
2283 | 2283 | | |
2284 | 2284 | | |
| |||
0 commit comments