Commit 48c4a47
authored
Fix type variable clash in nested positions and in attributes (#14095)
Addresses the non-crash part of #10244 (and similar situations).
The `freshen_function_type_vars()` use in `checkmember.py` was
inconsistent:
* It needs to be applied to attributes too, not just methods
* It needs to be a visitor, since generic callable can appear in a
nested position
The downsides are ~2% performance regression, and people will see more
large ids in `reveal_type()` (since refreshing functions uses a global
unique counter). But since this is a correctness issue that can cause
really bizarre error messages, I think it is totally worth it.1 parent 49316f9 commit 48c4a47
File tree
5 files changed
+113
-21
lines changed- mypy
- test-data/unit
5 files changed
+113
-21
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | | - | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
10 | 14 | | |
11 | 15 | | |
12 | 16 | | |
| |||
66 | 70 | | |
67 | 71 | | |
68 | 72 | | |
| 73 | + | |
69 | 74 | | |
70 | 75 | | |
71 | 76 | | |
| |||
311 | 316 | | |
312 | 317 | | |
313 | 318 | | |
314 | | - | |
| 319 | + | |
315 | 320 | | |
316 | 321 | | |
317 | 322 | | |
| |||
329 | 334 | | |
330 | 335 | | |
331 | 336 | | |
332 | | - | |
| 337 | + | |
333 | 338 | | |
334 | 339 | | |
335 | 340 | | |
| |||
727 | 732 | | |
728 | 733 | | |
729 | 734 | | |
| 735 | + | |
730 | 736 | | |
731 | 737 | | |
732 | 738 | | |
733 | | - | |
734 | | - | |
| 739 | + | |
| 740 | + | |
| 741 | + | |
735 | 742 | | |
736 | 743 | | |
737 | 744 | | |
| |||
759 | 766 | | |
760 | 767 | | |
761 | 768 | | |
762 | | - | |
| 769 | + | |
763 | 770 | | |
764 | 771 | | |
765 | 772 | | |
766 | 773 | | |
767 | 774 | | |
768 | | - | |
| 775 | + | |
769 | 776 | | |
770 | 777 | | |
771 | 778 | | |
| |||
788 | 795 | | |
789 | 796 | | |
790 | 797 | | |
791 | | - | |
792 | | - | |
793 | | - | |
794 | | - | |
795 | | - | |
| 798 | + | |
| 799 | + | |
| 800 | + | |
| 801 | + | |
| 802 | + | |
| 803 | + | |
| 804 | + | |
796 | 805 | | |
797 | | - | |
798 | | - | |
799 | | - | |
800 | | - | |
801 | 806 | | |
802 | 807 | | |
803 | 808 | | |
| |||
1131 | 1136 | | |
1132 | 1137 | | |
1133 | 1138 | | |
1134 | | - | |
| 1139 | + | |
1135 | 1140 | | |
1136 | 1141 | | |
1137 | 1142 | | |
1138 | | - | |
| 1143 | + | |
1139 | 1144 | | |
1140 | 1145 | | |
1141 | 1146 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
6 | 7 | | |
7 | 8 | | |
8 | 9 | | |
| |||
130 | 131 | | |
131 | 132 | | |
132 | 133 | | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
133 | 154 | | |
134 | 155 | | |
135 | 156 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
| 13 | + | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| |||
275 | 275 | | |
276 | 276 | | |
277 | 277 | | |
| 278 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1544 | 1544 | | |
1545 | 1545 | | |
1546 | 1546 | | |
1547 | | - | |
| 1547 | + | |
1548 | 1548 | | |
1549 | 1549 | | |
1550 | 1550 | | |
| |||
2580 | 2580 | | |
2581 | 2581 | | |
2582 | 2582 | | |
| 2583 | + | |
| 2584 | + | |
| 2585 | + | |
| 2586 | + | |
| 2587 | + | |
| 2588 | + | |
| 2589 | + | |
| 2590 | + | |
| 2591 | + | |
| 2592 | + | |
| 2593 | + | |
| 2594 | + | |
| 2595 | + | |
| 2596 | + | |
| 2597 | + | |
| 2598 | + | |
| 2599 | + | |
| 2600 | + | |
| 2601 | + | |
| 2602 | + | |
| 2603 | + | |
| 2604 | + | |
| 2605 | + | |
| 2606 | + | |
| 2607 | + | |
| 2608 | + | |
| 2609 | + | |
| 2610 | + | |
| 2611 | + | |
| 2612 | + | |
| 2613 | + | |
| 2614 | + | |
| 2615 | + | |
| 2616 | + | |
| 2617 | + | |
| 2618 | + | |
| 2619 | + | |
| 2620 | + | |
| 2621 | + | |
| 2622 | + | |
| 2623 | + | |
| 2624 | + | |
| 2625 | + | |
| 2626 | + | |
| 2627 | + | |
| 2628 | + | |
| 2629 | + | |
| 2630 | + | |
| 2631 | + | |
| 2632 | + | |
| 2633 | + | |
| 2634 | + | |
| 2635 | + | |
| 2636 | + | |
| 2637 | + | |
| 2638 | + | |
| 2639 | + | |
| 2640 | + | |
| 2641 | + | |
| 2642 | + | |
| 2643 | + | |
| 2644 | + | |
| 2645 | + | |
| 2646 | + | |
| 2647 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1674 | 1674 | | |
1675 | 1675 | | |
1676 | 1676 | | |
1677 | | - | |
| 1677 | + | |
1678 | 1678 | | |
1679 | 1679 | | |
1680 | 1680 | | |
| |||
0 commit comments