Skip to content

Commit b65bbfd

Browse files
committed
correctly resolve Symbol of destructuring shorthand intializer
Fixes: microsoft#21046
1 parent 2b14bcb commit b65bbfd

9 files changed

+75
-0
lines changed

src/compiler/utilities.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1633,6 +1633,8 @@ namespace ts {
16331633
return true;
16341634
case SyntaxKind.ExpressionWithTypeArguments:
16351635
return (<ExpressionWithTypeArguments>parent).expression === node && isExpressionWithTypeArgumentsInClassExtendsClause(parent);
1636+
case SyntaxKind.ShorthandPropertyAssignment:
1637+
return (<ShorthandPropertyAssignment>parent).objectAssignmentInitializer === node;
16361638
default:
16371639
return isExpressionNode(parent);
16381640
}

tests/baselines/reference/assignmentTypeNarrowing.types

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ x; // number
6363
>{x = ""} = {x: true} : { x?: true; }
6464
>{x = ""} : { x?: string | number | boolean | RegExp; }
6565
>x : string | number | boolean | RegExp
66+
>"" : ""
6667
>{x: true} : { x?: true; }
6768
>x : true
6869
>true : true

tests/baselines/reference/checkDestructuringShorthandAssigment.types

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,6 @@ Test(({ b = '5' } = {}));
1313
>{ b = '5' } = {} : { b?: any; }
1414
>{ b = '5' } : { [x: string]: any; b?: any; }
1515
>b : any
16+
>'5' : "5"
1617
>{} : { b?: any; }
1718

tests/baselines/reference/destructuringAssignmentWithDefault.types

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,6 @@ let x = 0;
1313
>{x = 1} = a : { x?: number | undefined; }
1414
>{x = 1} : { x?: number; }
1515
>x : number
16+
>1 : 1
1617
>a : { x?: number | undefined; }
1718

tests/baselines/reference/es5-asyncFunctionForOfStatements.symbols

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ async function forOfStatement17() {
169169

170170
for ({ x = a } of await y) { z; }
171171
>x : Symbol(x, Decl(es5-asyncFunctionForOfStatements.ts, 71, 10))
172+
>a : Symbol(a, Decl(es5-asyncFunctionForOfStatements.ts, 0, 20))
172173
>y : Symbol(y, Decl(es5-asyncFunctionForOfStatements.ts, 0, 14))
173174
>z : Symbol(z, Decl(es5-asyncFunctionForOfStatements.ts, 0, 17))
174175
}
@@ -178,6 +179,7 @@ async function forOfStatement18() {
178179

179180
for ({ x = a } of y) { await z; }
180181
>x : Symbol(x, Decl(es5-asyncFunctionForOfStatements.ts, 75, 10))
182+
>a : Symbol(a, Decl(es5-asyncFunctionForOfStatements.ts, 0, 20))
181183
>y : Symbol(y, Decl(es5-asyncFunctionForOfStatements.ts, 0, 14))
182184
>z : Symbol(z, Decl(es5-asyncFunctionForOfStatements.ts, 0, 17))
183185
}

tests/baselines/reference/shorthandPropertyAssignmentsInDestructuring.types

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
for ({ s0 = 5 } of [{ s0: 1 }]) {
1010
>{ s0 = 5 } : { s0?: any; }
1111
>s0 : any
12+
>5 : 5
1213
>[{ s0: 1 }] : { s0: number; }[]
1314
>{ s0: 1 } : { s0: number; }
1415
>s0 : number
@@ -45,6 +46,7 @@
4546
for ({ s1 = 5 } of [{}]) {
4647
>{ s1 = 5 } : { s1?: any; }
4748
>s1 : any
49+
>5 : 5
4850
>[{}] : {}[]
4951
>{} : {}
5052
}
@@ -78,6 +80,7 @@
7880
for ({ s2 = 5 } of [{ s2: "" }]) {
7981
>{ s2 = 5 } : { s2?: any; }
8082
>s2 : any
83+
>5 : 5
8184
>[{ s2: "" }] : { s2: string; }[]
8285
>{ s2: "" } : { s2: string; }
8386
>s2 : string
@@ -115,6 +118,7 @@
115118
for ({ s3 = 5 } of [{ s3: "" }]) {
116119
>{ s3 = 5 } : { s3?: string; }
117120
>s3 : string
121+
>5 : 5
118122
>[{ s3: "" }] : { s3: string; }[]
119123
>{ s3: "" } : { s3: string; }
120124
>s3 : string
@@ -154,6 +158,7 @@
154158
>{ y = 5 } = { y: 1 } : { y?: number; }
155159
>{ y = 5 } : { y?: any; }
156160
>y : any
161+
>5 : 5
157162
>{ y: 1 } : { y?: number; }
158163
>y : number
159164
>1 : 1
@@ -193,6 +198,7 @@
193198
>{ y0 = 5 } = { y0: 1 } : { y0?: number; }
194199
>{ y0 = 5 } : { y0?: number; }
195200
>y0 : number
201+
>5 : 5
196202
>{ y0: 1 } : { y0?: number; }
197203
>y0 : number
198204
>1 : 1
@@ -232,6 +238,7 @@
232238
>{ y1 = 5 } = {} : { y1?: string; }
233239
>{ y1 = 5 } : { y1?: string; }
234240
>y1 : string
241+
>5 : 5
235242
>{} : { y1?: string; }
236243

237244
});
@@ -269,6 +276,7 @@
269276
>{ y2 = 5, y3 = { x: 1 } } = {} : { y2?: string; y3?: { x: string; }; }
270277
>{ y2 = 5, y3 = { x: 1 } } : { y2?: string; y3?: { x: string; }; }
271278
>y2 : string
279+
>5 : 5
272280
>y3 : { x: string; }
273281
>{ x: 1 } : { x: number; }
274282
>x : number
@@ -318,6 +326,7 @@
318326
>{ y4 = 5, y5 = { x: 1 } } = {} : { y4?: number; y5?: { x: number; }; }
319327
>{ y4 = 5, y5 = { x: 1 } } : { y4?: number; y5?: { x: number; }; }
320328
>y4 : number
329+
>5 : 5
321330
>y5 : { x: number; }
322331
>{ x: 1 } : { x: number; }
323332
>x : number
@@ -411,6 +420,7 @@
411420
>a : { s: any; }
412421
>{ s = 5 } : { s: any; }
413422
>s : any
423+
>5 : 5
414424

415425
});
416426

tests/baselines/reference/shorthandPropertyAssignmentsInDestructuring_ES6.types

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
for ({ s0 = 5 } of [{ s0: 1 }]) {
1010
>{ s0 = 5 } : { s0?: any; }
1111
>s0 : any
12+
>5 : 5
1213
>[{ s0: 1 }] : { s0: number; }[]
1314
>{ s0: 1 } : { s0: number; }
1415
>s0 : number
@@ -45,6 +46,7 @@
4546
for ({ s1 = 5 } of [{}]) {
4647
>{ s1 = 5 } : { s1?: any; }
4748
>s1 : any
49+
>5 : 5
4850
>[{}] : {}[]
4951
>{} : {}
5052
}
@@ -78,6 +80,7 @@
7880
for ({ s2 = 5 } of [{ s2: "" }]) {
7981
>{ s2 = 5 } : { s2?: any; }
8082
>s2 : any
83+
>5 : 5
8184
>[{ s2: "" }] : { s2: string; }[]
8285
>{ s2: "" } : { s2: string; }
8386
>s2 : string
@@ -115,6 +118,7 @@
115118
for ({ s3 = 5 } of [{ s3: "" }]) {
116119
>{ s3 = 5 } : { s3?: string; }
117120
>s3 : string
121+
>5 : 5
118122
>[{ s3: "" }] : { s3: string; }[]
119123
>{ s3: "" } : { s3: string; }
120124
>s3 : string
@@ -154,6 +158,7 @@
154158
>{ y = 5 } = { y: 1 } : { y?: number; }
155159
>{ y = 5 } : { y?: any; }
156160
>y : any
161+
>5 : 5
157162
>{ y: 1 } : { y?: number; }
158163
>y : number
159164
>1 : 1
@@ -193,6 +198,7 @@
193198
>{ y0 = 5 } = { y0: 1 } : { y0?: number; }
194199
>{ y0 = 5 } : { y0?: number; }
195200
>y0 : number
201+
>5 : 5
196202
>{ y0: 1 } : { y0?: number; }
197203
>y0 : number
198204
>1 : 1
@@ -232,6 +238,7 @@
232238
>{ y1 = 5 } = {} : { y1?: string; }
233239
>{ y1 = 5 } : { y1?: string; }
234240
>y1 : string
241+
>5 : 5
235242
>{} : { y1?: string; }
236243

237244
});
@@ -269,6 +276,7 @@
269276
>{ y2 = 5, y3 = { x: 1 } } = {} : { y2?: string; y3?: { x: string; }; }
270277
>{ y2 = 5, y3 = { x: 1 } } : { y2?: string; y3?: { x: string; }; }
271278
>y2 : string
279+
>5 : 5
272280
>y3 : { x: string; }
273281
>{ x: 1 } : { x: number; }
274282
>x : number
@@ -318,6 +326,7 @@
318326
>{ y4 = 5, y5 = { x: 1 } } = {} : { y4?: number; y5?: { x: number; }; }
319327
>{ y4 = 5, y5 = { x: 1 } } : { y4?: number; y5?: { x: number; }; }
320328
>y4 : number
329+
>5 : 5
321330
>y5 : { x: number; }
322331
>{ x: 1 } : { x: number; }
323332
>x : number
@@ -411,6 +420,7 @@
411420
>a : { s: any; }
412421
>{ s = 5 } : { s: any; }
413422
>s : any
423+
>5 : 5
414424

415425
});
416426

tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.types

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,7 @@ for ({ name = "noName" } = robot, i = 0; i < 1; i++) {
324324
>{ name = "noName" } = robot : Robot
325325
>{ name = "noName" } : { name?: string; }
326326
>name : string
327+
>"noName" : "noName"
327328
>robot : Robot
328329
>i = 0 : 0
329330
>i : number
@@ -346,6 +347,7 @@ for ({ name = "noName" } = getRobot(), i = 0; i < 1; i++) {
346347
>{ name = "noName" } = getRobot() : Robot
347348
>{ name = "noName" } : { name?: string; }
348349
>name : string
350+
>"noName" : "noName"
349351
>getRobot() : Robot
350352
>getRobot : () => Robot
351353
>i = 0 : 0
@@ -369,6 +371,7 @@ for ({ name = "noName" } = <Robot>{ name: "trimmer", skill: "trimming" }, i = 0;
369371
>{ name = "noName" } = <Robot>{ name: "trimmer", skill: "trimming" } : Robot
370372
>{ name = "noName" } : { name?: string; }
371373
>name : string
374+
>"noName" : "noName"
372375
><Robot>{ name: "trimmer", skill: "trimming" } : Robot
373376
>Robot : Robot
374377
>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; }
@@ -404,9 +407,11 @@ for ({
404407

405408
primary = "primary",
406409
>primary : string
410+
>"primary" : "primary"
407411

408412
secondary = "secondary"
409413
>secondary : string
414+
>"secondary" : "secondary"
410415

411416
} = { primary: "none", secondary: "none" }
412417
>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; }
@@ -445,9 +450,11 @@ for ({
445450

446451
primary = "primary",
447452
>primary : string
453+
>"primary" : "primary"
448454

449455
secondary = "secondary"
450456
>secondary : string
457+
>"secondary" : "secondary"
451458

452459
} = { primary: "none", secondary: "none" }
453460
>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; }
@@ -487,9 +494,11 @@ for ({
487494

488495
primary = "primary",
489496
>primary : string
497+
>"primary" : "primary"
490498

491499
secondary = "secondary"
492500
>secondary : string
501+
>"secondary" : "secondary"
493502

494503
} = { primary: "none", secondary: "none" }
495504
>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; }
@@ -802,7 +811,9 @@ for ({ name = "noName", skill = "skill" } = robot, i = 0; i < 1; i++) {
802811
>{ name = "noName", skill = "skill" } = robot : Robot
803812
>{ name = "noName", skill = "skill" } : { name?: string; skill?: string; }
804813
>name : string
814+
>"noName" : "noName"
805815
>skill : string
816+
>"skill" : "skill"
806817
>robot : Robot
807818
>i = 0 : 0
808819
>i : number
@@ -825,7 +836,9 @@ for ({ name = "noName", skill = "skill" } = getRobot(), i = 0; i < 1; i++) {
825836
>{ name = "noName", skill = "skill" } = getRobot() : Robot
826837
>{ name = "noName", skill = "skill" } : { name?: string; skill?: string; }
827838
>name : string
839+
>"noName" : "noName"
828840
>skill : string
841+
>"skill" : "skill"
829842
>getRobot() : Robot
830843
>getRobot : () => Robot
831844
>i = 0 : 0
@@ -849,7 +862,9 @@ for ({ name = "noName", skill = "skill" } = <Robot>{ name: "trimmer", skill: "tr
849862
>{ name = "noName", skill = "skill" } = <Robot>{ name: "trimmer", skill: "trimming" } : Robot
850863
>{ name = "noName", skill = "skill" } : { name?: string; skill?: string; }
851864
>name : string
865+
>"noName" : "noName"
852866
>skill : string
867+
>"skill" : "skill"
853868
><Robot>{ name: "trimmer", skill: "trimming" } : Robot
854869
>Robot : Robot
855870
>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; }
@@ -880,6 +895,7 @@ for ({
880895

881896
name = "noName",
882897
>name : string
898+
>"noName" : "noName"
883899

884900
skills: {
885901
>skills : { primary?: string; secondary?: string; }
@@ -888,9 +904,11 @@ for ({
888904

889905
primary = "primary",
890906
>primary : string
907+
>"primary" : "primary"
891908

892909
secondary = "secondary"
893910
>secondary : string
911+
>"secondary" : "secondary"
894912

895913
} = { primary: "none", secondary: "none" }
896914
>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; }
@@ -924,6 +942,7 @@ for ({
924942

925943
name = "noName",
926944
>name : string
945+
>"noName" : "noName"
927946

928947
skills: {
929948
>skills : { primary?: string; secondary?: string; }
@@ -932,9 +951,11 @@ for ({
932951

933952
primary = "primary",
934953
>primary : string
954+
>"primary" : "primary"
935955

936956
secondary = "secondary"
937957
>secondary : string
958+
>"secondary" : "secondary"
938959

939960
} = { primary: "none", secondary: "none" }
940961
>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; }
@@ -969,6 +990,7 @@ for ({
969990

970991
name = "noName",
971992
>name : string
993+
>"noName" : "noName"
972994

973995
skills: {
974996
>skills : { primary?: string; secondary?: string; }
@@ -977,9 +999,11 @@ for ({
977999

9781000
primary = "primary",
9791001
>primary : string
1002+
>"primary" : "primary"
9801003

9811004
secondary = "secondary"
9821005
>secondary : string
1006+
>"secondary" : "secondary"
9831007

9841008
} = { primary: "none", secondary: "none" }
9851009
>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; }

0 commit comments

Comments
 (0)