Commit 6bef521
Fix TypeVar resolution order in union type aliases (#2056)
Summary:
Union type aliases like `Result = Ok[_T] | Error[_TE]` were collecting type parameters in the wrong order because union members get sorted alphabetically during simplification. This caused `Result[T, TE]` to incorrectly match `T` to `_TE` instead of `_T`.
The fix sorts collected type parameters by their source location after traversal, restoring the user's intended order.
Fixes #1759.
Pull Request resolved: #2056
Test Plan:
- Added `test_union_type_alias_typevar_order` - original issue reproduction
- Added `test_union_type_alias_typevar_order_multiple` - 3 TypeVars with reversed alphabetical order
- Added `test_union_type_alias_duplicate_typevar` - same TypeVar appearing multiple times
Reviewed By: grievejia
Differential Revision: D90423141
Pulled By: stroxler
fbshipit-source-id: 07b5e9024f9373a1ffbf769d6bf14560314cc2221 parent d7ffc4b commit 6bef521
2 files changed
Lines changed: 123 additions & 14 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
967 | 967 | | |
968 | 968 | | |
969 | 969 | | |
970 | | - | |
| 970 | + | |
971 | 971 | | |
972 | 972 | | |
973 | 973 | | |
| |||
1049 | 1049 | | |
1050 | 1050 | | |
1051 | 1051 | | |
1052 | | - | |
1053 | | - | |
1054 | | - | |
1055 | | - | |
| 1052 | + | |
| 1053 | + | |
| 1054 | + | |
| 1055 | + | |
| 1056 | + | |
| 1057 | + | |
| 1058 | + | |
1056 | 1059 | | |
1057 | 1060 | | |
1058 | 1061 | | |
| |||
1068 | 1071 | | |
1069 | 1072 | | |
1070 | 1073 | | |
1071 | | - | |
1072 | | - | |
1073 | | - | |
1074 | | - | |
| 1074 | + | |
| 1075 | + | |
| 1076 | + | |
| 1077 | + | |
| 1078 | + | |
| 1079 | + | |
| 1080 | + | |
1075 | 1081 | | |
1076 | 1082 | | |
1077 | 1083 | | |
| |||
1087 | 1093 | | |
1088 | 1094 | | |
1089 | 1095 | | |
1090 | | - | |
1091 | | - | |
1092 | | - | |
1093 | | - | |
| 1096 | + | |
| 1097 | + | |
| 1098 | + | |
| 1099 | + | |
| 1100 | + | |
| 1101 | + | |
| 1102 | + | |
1094 | 1103 | | |
1095 | 1104 | | |
1096 | 1105 | | |
| |||
1175 | 1184 | | |
1176 | 1185 | | |
1177 | 1186 | | |
| 1187 | + | |
1178 | 1188 | | |
1179 | 1189 | | |
1180 | 1190 | | |
1181 | 1191 | | |
1182 | 1192 | | |
1183 | | - | |
| 1193 | + | |
1184 | 1194 | | |
| 1195 | + | |
| 1196 | + | |
| 1197 | + | |
| 1198 | + | |
| 1199 | + | |
1185 | 1200 | | |
1186 | 1201 | | |
1187 | 1202 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
885 | 885 | | |
886 | 886 | | |
887 | 887 | | |
| 888 | + | |
| 889 | + | |
| 890 | + | |
| 891 | + | |
| 892 | + | |
| 893 | + | |
| 894 | + | |
| 895 | + | |
| 896 | + | |
| 897 | + | |
| 898 | + | |
| 899 | + | |
| 900 | + | |
| 901 | + | |
| 902 | + | |
| 903 | + | |
| 904 | + | |
| 905 | + | |
| 906 | + | |
| 907 | + | |
| 908 | + | |
| 909 | + | |
| 910 | + | |
| 911 | + | |
| 912 | + | |
| 913 | + | |
| 914 | + | |
| 915 | + | |
| 916 | + | |
| 917 | + | |
| 918 | + | |
| 919 | + | |
| 920 | + | |
| 921 | + | |
| 922 | + | |
| 923 | + | |
| 924 | + | |
| 925 | + | |
| 926 | + | |
| 927 | + | |
| 928 | + | |
| 929 | + | |
| 930 | + | |
| 931 | + | |
| 932 | + | |
| 933 | + | |
| 934 | + | |
| 935 | + | |
| 936 | + | |
| 937 | + | |
| 938 | + | |
| 939 | + | |
| 940 | + | |
| 941 | + | |
| 942 | + | |
| 943 | + | |
| 944 | + | |
| 945 | + | |
| 946 | + | |
| 947 | + | |
| 948 | + | |
| 949 | + | |
| 950 | + | |
| 951 | + | |
| 952 | + | |
| 953 | + | |
| 954 | + | |
| 955 | + | |
| 956 | + | |
| 957 | + | |
| 958 | + | |
| 959 | + | |
| 960 | + | |
| 961 | + | |
| 962 | + | |
| 963 | + | |
| 964 | + | |
| 965 | + | |
| 966 | + | |
| 967 | + | |
| 968 | + | |
| 969 | + | |
| 970 | + | |
| 971 | + | |
| 972 | + | |
| 973 | + | |
| 974 | + | |
| 975 | + | |
| 976 | + | |
| 977 | + | |
| 978 | + | |
| 979 | + | |
| 980 | + | |
| 981 | + | |
0 commit comments