@@ -9,80 +9,64 @@ declare function foo<T extends { dataType: 'a' | 'b' }>(template: T): [T, any, a
99>T : Symbol(T, Decl(excessPropertyCheckingInArrayDestructuring.ts, 0, 21))
1010>T : Symbol(T, Decl(excessPropertyCheckingInArrayDestructuring.ts, 0, 21))
1111
12- declare function bar<T extends { dataType: 'a' | 'b' }>(template: T): [any, T, any];
13- >bar : Symbol(bar, Decl(excessPropertyCheckingInArrayDestructuring.ts, 0, 84))
14- >T : Symbol(T, Decl(excessPropertyCheckingInArrayDestructuring.ts, 1, 21))
15- >dataType : Symbol(dataType, Decl(excessPropertyCheckingInArrayDestructuring.ts, 1, 32))
16- >template : Symbol(template, Decl(excessPropertyCheckingInArrayDestructuring.ts, 1, 56))
17- >T : Symbol(T, Decl(excessPropertyCheckingInArrayDestructuring.ts, 1, 21))
18- >T : Symbol(T, Decl(excessPropertyCheckingInArrayDestructuring.ts, 1, 21))
19-
20- // Test cases that should work (no excess property errors)
21- const [, works1] = foo({ dataType: 'a', day: 0 });
22- >works1 : Symbol(works1, Decl(excessPropertyCheckingInArrayDestructuring.ts, 4, 8))
23- >foo : Symbol(foo, Decl(excessPropertyCheckingInArrayDestructuring.ts, 0, 0))
24- >dataType : Symbol(dataType, Decl(excessPropertyCheckingInArrayDestructuring.ts, 4, 24))
25- >day : Symbol(day, Decl(excessPropertyCheckingInArrayDestructuring.ts, 4, 39))
26-
27- const [, , works2] = foo({ dataType: 'a', day: 0 });
28- >works2 : Symbol(works2, Decl(excessPropertyCheckingInArrayDestructuring.ts, 5, 10))
12+ // Test the specific problematic case that should now work
13+ const [, , works1] = foo({ dataType: 'a', day: 0 });
14+ >works1 : Symbol(works1, Decl(excessPropertyCheckingInArrayDestructuring.ts, 3, 10))
2915>foo : Symbol(foo, Decl(excessPropertyCheckingInArrayDestructuring.ts, 0, 0))
30- >dataType : Symbol(dataType, Decl(excessPropertyCheckingInArrayDestructuring.ts, 5 , 26))
31- >day : Symbol(day, Decl(excessPropertyCheckingInArrayDestructuring.ts, 5 , 41))
16+ >dataType : Symbol(dataType, Decl(excessPropertyCheckingInArrayDestructuring.ts, 3 , 26))
17+ >day : Symbol(day, Decl(excessPropertyCheckingInArrayDestructuring.ts, 3 , 41))
3218
33- const [, , , works3 ] = foo({ dataType: 'a ', day: 0 });
34- >works3 : Symbol(works3 , Decl(excessPropertyCheckingInArrayDestructuring.ts, 6, 12 ))
19+ const [, , works2 ] = foo({ dataType: 'b ', extra: 'value' });
20+ >works2 : Symbol(works2 , Decl(excessPropertyCheckingInArrayDestructuring.ts, 4, 10 ))
3521>foo : Symbol(foo, Decl(excessPropertyCheckingInArrayDestructuring.ts, 0, 0))
36- >dataType : Symbol(dataType, Decl(excessPropertyCheckingInArrayDestructuring.ts, 6, 28))
37- >day : Symbol(day, Decl(excessPropertyCheckingInArrayDestructuring.ts, 6, 43))
38-
39- // Test with different function signatures
40- const [, , works4] = bar({ dataType: 'b', extra: 'value' });
41- >works4 : Symbol(works4, Decl(excessPropertyCheckingInArrayDestructuring.ts, 9, 10))
42- >bar : Symbol(bar, Decl(excessPropertyCheckingInArrayDestructuring.ts, 0, 84))
43- >dataType : Symbol(dataType, Decl(excessPropertyCheckingInArrayDestructuring.ts, 9, 26))
44- >extra : Symbol(extra, Decl(excessPropertyCheckingInArrayDestructuring.ts, 9, 41))
45-
46- // Test assignment destructuring
47- let a: any, b: any, c: any;
48- >a : Symbol(a, Decl(excessPropertyCheckingInArrayDestructuring.ts, 12, 3))
49- >b : Symbol(b, Decl(excessPropertyCheckingInArrayDestructuring.ts, 12, 11))
50- >c : Symbol(c, Decl(excessPropertyCheckingInArrayDestructuring.ts, 12, 19))
22+ >dataType : Symbol(dataType, Decl(excessPropertyCheckingInArrayDestructuring.ts, 4, 26))
23+ >extra : Symbol(extra, Decl(excessPropertyCheckingInArrayDestructuring.ts, 4, 41))
5124
52- [, , a] = foo({ dataType: 'a', day: 0 });
53- >a : Symbol(a, Decl(excessPropertyCheckingInArrayDestructuring.ts, 12, 3))
54- >foo : Symbol(foo, Decl(excessPropertyCheckingInArrayDestructuring.ts, 0, 0))
55- >dataType : Symbol(dataType, Decl(excessPropertyCheckingInArrayDestructuring.ts, 13, 15))
56- >day : Symbol(day, Decl(excessPropertyCheckingInArrayDestructuring.ts, 13, 30))
25+ // Test assignment destructuring (not currently fixed)
26+ let a: any;
27+ >a : Symbol(a, Decl(excessPropertyCheckingInArrayDestructuring.ts, 7, 3))
5728
58- [, b, ] = foo({ dataType: 'a', day: 0 });
59- >b : Symbol(b , Decl(excessPropertyCheckingInArrayDestructuring.ts, 12, 11 ))
29+ [, , a ] = foo({ dataType: 'a', day: 0 }); // This might still error
30+ >a : Symbol(a , Decl(excessPropertyCheckingInArrayDestructuring.ts, 7, 3 ))
6031>foo : Symbol(foo, Decl(excessPropertyCheckingInArrayDestructuring.ts, 0, 0))
61- >dataType : Symbol(dataType, Decl(excessPropertyCheckingInArrayDestructuring.ts, 14 , 15))
62- >day : Symbol(day, Decl(excessPropertyCheckingInArrayDestructuring.ts, 14 , 30))
32+ >dataType : Symbol(dataType, Decl(excessPropertyCheckingInArrayDestructuring.ts, 8 , 15))
33+ >day : Symbol(day, Decl(excessPropertyCheckingInArrayDestructuring.ts, 8 , 30))
6334
6435// Test that legitimate errors are still caught
6536const [, , fails1] = foo({ dataType: 'c' }); // Error: 'c' not assignable to 'a' | 'b'
66- >fails1 : Symbol(fails1, Decl(excessPropertyCheckingInArrayDestructuring.ts, 17 , 10))
37+ >fails1 : Symbol(fails1, Decl(excessPropertyCheckingInArrayDestructuring.ts, 11 , 10))
6738>foo : Symbol(foo, Decl(excessPropertyCheckingInArrayDestructuring.ts, 0, 0))
68- >dataType : Symbol(dataType, Decl(excessPropertyCheckingInArrayDestructuring.ts, 17 , 26))
39+ >dataType : Symbol(dataType, Decl(excessPropertyCheckingInArrayDestructuring.ts, 11 , 26))
6940
7041const [, , fails2] = foo(123); // Error: number not assignable to constraint
71- >fails2 : Symbol(fails2, Decl(excessPropertyCheckingInArrayDestructuring.ts, 18 , 10))
42+ >fails2 : Symbol(fails2, Decl(excessPropertyCheckingInArrayDestructuring.ts, 12 , 10))
7243>foo : Symbol(foo, Decl(excessPropertyCheckingInArrayDestructuring.ts, 0, 0))
7344
7445// Test that non-destructuring cases work as before
7546const result = foo({ dataType: 'a', day: 0 }); // Should work
76- >result : Symbol(result, Decl(excessPropertyCheckingInArrayDestructuring.ts, 21 , 5))
47+ >result : Symbol(result, Decl(excessPropertyCheckingInArrayDestructuring.ts, 15 , 5))
7748>foo : Symbol(foo, Decl(excessPropertyCheckingInArrayDestructuring.ts, 0, 0))
78- >dataType : Symbol(dataType, Decl(excessPropertyCheckingInArrayDestructuring.ts, 21 , 20))
79- >day : Symbol(day, Decl(excessPropertyCheckingInArrayDestructuring.ts, 21 , 35))
49+ >dataType : Symbol(dataType, Decl(excessPropertyCheckingInArrayDestructuring.ts, 15 , 20))
50+ >day : Symbol(day, Decl(excessPropertyCheckingInArrayDestructuring.ts, 15 , 35))
8051
8152const explicit: [{ dataType: 'a', day: number }, any, any] = foo({ dataType: 'a', day: 0 }); // Should work
82- >explicit : Symbol(explicit, Decl(excessPropertyCheckingInArrayDestructuring.ts, 22, 5))
83- >dataType : Symbol(dataType, Decl(excessPropertyCheckingInArrayDestructuring.ts, 22, 18))
84- >day : Symbol(day, Decl(excessPropertyCheckingInArrayDestructuring.ts, 22, 33))
53+ >explicit : Symbol(explicit, Decl(excessPropertyCheckingInArrayDestructuring.ts, 16, 5))
54+ >dataType : Symbol(dataType, Decl(excessPropertyCheckingInArrayDestructuring.ts, 16, 18))
55+ >day : Symbol(day, Decl(excessPropertyCheckingInArrayDestructuring.ts, 16, 33))
56+ >foo : Symbol(foo, Decl(excessPropertyCheckingInArrayDestructuring.ts, 0, 0))
57+ >dataType : Symbol(dataType, Decl(excessPropertyCheckingInArrayDestructuring.ts, 16, 66))
58+ >day : Symbol(day, Decl(excessPropertyCheckingInArrayDestructuring.ts, 16, 81))
59+
60+ // Test that other destructuring patterns work correctly
61+ const [first] = foo({ dataType: 'a', day: 0 }); // Should work
62+ >first : Symbol(first, Decl(excessPropertyCheckingInArrayDestructuring.ts, 19, 7))
63+ >foo : Symbol(foo, Decl(excessPropertyCheckingInArrayDestructuring.ts, 0, 0))
64+ >dataType : Symbol(dataType, Decl(excessPropertyCheckingInArrayDestructuring.ts, 19, 21))
65+ >day : Symbol(day, Decl(excessPropertyCheckingInArrayDestructuring.ts, 19, 36))
66+
67+ const [, second] = foo({ dataType: 'a', day: 0 }); // Should work
68+ >second : Symbol(second, Decl(excessPropertyCheckingInArrayDestructuring.ts, 20, 8))
8569>foo : Symbol(foo, Decl(excessPropertyCheckingInArrayDestructuring.ts, 0, 0))
86- >dataType : Symbol(dataType, Decl(excessPropertyCheckingInArrayDestructuring.ts, 22, 66 ))
87- >day : Symbol(day, Decl(excessPropertyCheckingInArrayDestructuring.ts, 22, 81 ))
70+ >dataType : Symbol(dataType, Decl(excessPropertyCheckingInArrayDestructuring.ts, 20, 24 ))
71+ >day : Symbol(day, Decl(excessPropertyCheckingInArrayDestructuring.ts, 20, 39 ))
8872
0 commit comments