Skip to content

Commit 33d7a1f

Browse files
committed
Merge pull request #5397 from seanchas116/fix-nested-parameter-destructuring
Fix nested parameter destructuring
2 parents a9058f9 + e64831b commit 33d7a1f

File tree

5 files changed

+44
-1
lines changed

5 files changed

+44
-1
lines changed

src/compiler/checker.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9414,7 +9414,9 @@ namespace ts {
94149414
if (isBindingPattern(node.name)) {
94159415
for (let element of (<BindingPattern>node.name).elements) {
94169416
if (element.kind !== SyntaxKind.OmittedExpression) {
9417-
getSymbolLinks(getSymbolOfNode(element)).type = getTypeForBindingElement(element);
9417+
if (element.name.kind === SyntaxKind.Identifier) {
9418+
getSymbolLinks(getSymbolOfNode(element)).type = getTypeForBindingElement(element);
9419+
}
94189420
assignBindingElementTypes(element);
94199421
}
94209422
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
tests/cases/compiler/bindingPatternInParameter01.ts(4,3): error TS2304: Cannot find name 'console'.
2+
3+
4+
==== tests/cases/compiler/bindingPatternInParameter01.ts (1 errors) ====
5+
const nestedArray = [[[1, 2]], [[3, 4]]];
6+
7+
nestedArray.forEach(([[a, b]]) => {
8+
console.log(a, b);
9+
~~~~~~~
10+
!!! error TS2304: Cannot find name 'console'.
11+
});
12+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
//// [bindingPatternInParameter01.ts]
2+
const nestedArray = [[[1, 2]], [[3, 4]]];
3+
4+
nestedArray.forEach(([[a, b]]) => {
5+
console.log(a, b);
6+
});
7+
8+
9+
//// [bindingPatternInParameter01.js]
10+
var nestedArray = [[[1, 2]], [[3, 4]]];
11+
nestedArray.forEach(function (_a) {
12+
var _b = _a[0], a = _b[0], b = _b[1];
13+
console.log(a, b);
14+
});
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const nestedArray = [[[1, 2]], [[3, 4]]];
2+
3+
nestedArray.forEach(([[a, b]]) => {
4+
console.log(a, b);
5+
});
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/// <reference path='fourslash.ts'/>
2+
3+
////[[{foo: 'hello', bar: [1]}]]
4+
//// .map(([{foo, bar: [baz]}]) => /*1*/foo + /*2*/baz);
5+
6+
goTo.marker('1');
7+
verify.quickInfoIs('var foo: string');
8+
9+
goTo.marker('2');
10+
verify.quickInfoIs('var baz: number');

0 commit comments

Comments
 (0)