Check for number of binding elements in parameter patterns.

This commit is contained in:
Daniel Rosenwasser
2015-06-22 16:44:00 -07:00
parent 82f7f7d8e2
commit 0f871b9812
2 changed files with 12 additions and 7 deletions

View File

@@ -3142,12 +3142,17 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
return;
}
if (isBindingPattern(parameter.name)) {
writeLine();
write("var ");
emitDestructuring(parameter, /*isAssignmentExpressionStatement*/ false, tempParameters[tempIndex]);
write(";");
tempIndex++;
let paramName = parameter.name;
if (isBindingPattern(paramName)) {
// In cases where a binding patternm is simply '[]' or '{}',
// we don't want to emit anything.
if (paramName.elements.length > 0) {
writeLine();
write("var ");
emitDestructuring(parameter, /*isAssignmentExpressionStatement*/ false, tempParameters[tempIndex]);
write(";");
tempIndex++;
}
}
else if (parameter.initializer) {
writeLine();

View File

@@ -1067,7 +1067,7 @@ namespace ts {
return SyntaxKind.FirstTemplateToken <= kind && kind <= SyntaxKind.LastTemplateToken;
}
export function isBindingPattern(node: Node) {
export function isBindingPattern(node: Node): node is BindingPattern {
return !!node && (node.kind === SyntaxKind.ArrayBindingPattern || node.kind === SyntaxKind.ObjectBindingPattern);
}