diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 57e1f8190f0..04ff7a1eaa5 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -6628,6 +6628,7 @@ module ts { let typeArguments: NodeArray; // Type arguments (undefined if none) let callIsIncomplete: boolean; // In incomplete call we want to be lenient when we have too few arguments let isDecorator: boolean; + let spreadArgIndex = -1; if (node.kind === SyntaxKind.TaggedTemplateExpression) { let tagExpression = node; @@ -6675,6 +6676,7 @@ module ts { callIsIncomplete = (callExpression).arguments.end === callExpression.end; typeArguments = callExpression.typeArguments; + spreadArgIndex = getSpreadArgumentIndex(args); } // If the user supplied type arguments, but the number of type arguments does not match @@ -6687,7 +6689,6 @@ module ts { // If spread arguments are present, check that they correspond to a rest parameter. If so, no // further checking is necessary. - let spreadArgIndex = !isDecorator ? getSpreadArgumentIndex(args) : -1; if (spreadArgIndex >= 0) { return signature.hasRestParameter && spreadArgIndex >= signature.parameters.length - 1; } diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 006e1d6f1a9..264f2fdb55b 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -691,7 +691,6 @@ "category": "Error", "code": 1220 }, - "Unable to resolve signature of class decorator when called as an expression.": { "category": "Error", "code": 1221