Skip to content

Commit 0f871b9

Browse files
Check for number of binding elements in parameter patterns.
1 parent 82f7f7d commit 0f871b9

2 files changed

Lines changed: 12 additions & 7 deletions

File tree

src/compiler/emitter.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3142,12 +3142,17 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
31423142
return;
31433143
}
31443144

3145-
if (isBindingPattern(parameter.name)) {
3146-
writeLine();
3147-
write("var ");
3148-
emitDestructuring(parameter, /*isAssignmentExpressionStatement*/ false, tempParameters[tempIndex]);
3149-
write(";");
3150-
tempIndex++;
3145+
let paramName = parameter.name;
3146+
if (isBindingPattern(paramName)) {
3147+
// In cases where a binding patternm is simply '[]' or '{}',
3148+
// we don't want to emit anything.
3149+
if (paramName.elements.length > 0) {
3150+
writeLine();
3151+
write("var ");
3152+
emitDestructuring(parameter, /*isAssignmentExpressionStatement*/ false, tempParameters[tempIndex]);
3153+
write(";");
3154+
tempIndex++;
3155+
}
31513156
}
31523157
else if (parameter.initializer) {
31533158
writeLine();

src/compiler/utilities.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1067,7 +1067,7 @@ namespace ts {
10671067
return SyntaxKind.FirstTemplateToken <= kind && kind <= SyntaxKind.LastTemplateToken;
10681068
}
10691069

1070-
export function isBindingPattern(node: Node) {
1070+
export function isBindingPattern(node: Node): node is BindingPattern {
10711071
return !!node && (node.kind === SyntaxKind.ArrayBindingPattern || node.kind === SyntaxKind.ObjectBindingPattern);
10721072
}
10731073

0 commit comments

Comments
 (0)