Commit 3e8f803
authored
fix(codegen): better union-arm selection for object-literal return (#518)
* fix(codegen): better union-arm selection for object-literal return — pick smallest superset by field set instead of count equality
* fix(codegen): propagate declared interface type through function/method/constructor args so object literals in scrambled field order get correct struct layout (#519)
Co-authored-by: cs01 <[email protected]>
---------
Co-authored-by: cs01 <[email protected]>1 parent 05ff8b8 commit 3e8f803
6 files changed
Lines changed: 155 additions & 5 deletions
File tree
- src/codegen
- expressions
- types/objects
- tests/fixtures/interfaces
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
866 | 866 | | |
867 | 867 | | |
868 | 868 | | |
| 869 | + | |
869 | 870 | | |
870 | 871 | | |
871 | 872 | | |
| |||
903 | 904 | | |
904 | 905 | | |
905 | 906 | | |
| 907 | + | |
906 | 908 | | |
907 | 909 | | |
908 | 910 | | |
| |||
935 | 937 | | |
936 | 938 | | |
937 | 939 | | |
| 940 | + | |
938 | 941 | | |
939 | 942 | | |
940 | 943 | | |
| |||
943 | 946 | | |
944 | 947 | | |
945 | 948 | | |
| 949 | + | |
946 | 950 | | |
947 | 951 | | |
948 | 952 | | |
| |||
967 | 971 | | |
968 | 972 | | |
969 | 973 | | |
| 974 | + | |
| 975 | + | |
| 976 | + | |
| 977 | + | |
| 978 | + | |
| 979 | + | |
| 980 | + | |
| 981 | + | |
| 982 | + | |
| 983 | + | |
| 984 | + | |
970 | 985 | | |
| 986 | + | |
| 987 | + | |
| 988 | + | |
971 | 989 | | |
972 | 990 | | |
973 | 991 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3744 | 3744 | | |
3745 | 3745 | | |
3746 | 3746 | | |
3747 | | - | |
| 3747 | + | |
| 3748 | + | |
| 3749 | + | |
| 3750 | + | |
| 3751 | + | |
| 3752 | + | |
3748 | 3753 | | |
| 3754 | + | |
| 3755 | + | |
3749 | 3756 | | |
3750 | 3757 | | |
3751 | 3758 | | |
3752 | 3759 | | |
3753 | 3760 | | |
3754 | 3761 | | |
3755 | | - | |
3756 | | - | |
3757 | | - | |
| 3762 | + | |
| 3763 | + | |
| 3764 | + | |
| 3765 | + | |
| 3766 | + | |
| 3767 | + | |
| 3768 | + | |
| 3769 | + | |
| 3770 | + | |
| 3771 | + | |
| 3772 | + | |
| 3773 | + | |
| 3774 | + | |
| 3775 | + | |
| 3776 | + | |
| 3777 | + | |
| 3778 | + | |
| 3779 | + | |
| 3780 | + | |
| 3781 | + | |
| 3782 | + | |
| 3783 | + | |
| 3784 | + | |
| 3785 | + | |
| 3786 | + | |
| 3787 | + | |
| 3788 | + | |
| 3789 | + | |
| 3790 | + | |
| 3791 | + | |
3758 | 3792 | | |
3759 | 3793 | | |
3760 | 3794 | | |
3761 | | - | |
| 3795 | + | |
| 3796 | + | |
| 3797 | + | |
3762 | 3798 | | |
3763 | 3799 | | |
3764 | 3800 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1160 | 1160 | | |
1161 | 1161 | | |
1162 | 1162 | | |
| 1163 | + | |
| 1164 | + | |
| 1165 | + | |
| 1166 | + | |
| 1167 | + | |
| 1168 | + | |
| 1169 | + | |
| 1170 | + | |
| 1171 | + | |
| 1172 | + | |
| 1173 | + | |
1163 | 1174 | | |
| 1175 | + | |
| 1176 | + | |
| 1177 | + | |
1164 | 1178 | | |
1165 | 1179 | | |
1166 | 1180 | | |
| |||
1257 | 1271 | | |
1258 | 1272 | | |
1259 | 1273 | | |
| 1274 | + | |
| 1275 | + | |
| 1276 | + | |
| 1277 | + | |
| 1278 | + | |
| 1279 | + | |
| 1280 | + | |
| 1281 | + | |
| 1282 | + | |
| 1283 | + | |
1260 | 1284 | | |
1261 | 1285 | | |
1262 | 1286 | | |
| 1287 | + | |
| 1288 | + | |
| 1289 | + | |
1263 | 1290 | | |
1264 | 1291 | | |
1265 | 1292 | | |
| |||
Lines changed: 17 additions & 0 deletions
| 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 | + | |
Lines changed: 26 additions & 0 deletions
| 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 | + | |
| 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 | + | |
0 commit comments