From d433042386d93a512586fdde0d274e67d78b5088 Mon Sep 17 00:00:00 2001 From: Titian Cernicova-Dragomir Date: Mon, 11 Mar 2019 02:55:10 +0200 Subject: [PATCH] Fixed isVariadic handling when signature parameters are expanded for itemInfoForParameters --- src/compiler/checker.ts | 1 + src/compiler/types.ts | 2 +- src/services/signatureHelp.ts | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 1b0904723df..3791124a2a2 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -232,6 +232,7 @@ namespace ts { getResolvedSignatureForSignatureHelp: (node, candidatesOutArray, agumentCount) => getResolvedSignatureWorker(node, candidatesOutArray, agumentCount, CheckMode.IsForSignatureHelp), getExpandedParameters, + hasEffectiveRestParameter, getConstantValue: nodeIn => { const node = getParseTreeNode(nodeIn, canHaveConstantValue); return node ? getConstantValue(node) : undefined; diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 2d5f084434c..83bcf01742d 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -3093,7 +3093,6 @@ namespace ts { /* @internal */ getPromisedTypeOfPromise(promise: Type, errorNode?: Node): Type | undefined; getReturnTypeOfSignature(signature: Signature): Type; - /* @internal */ getExpandedParameters(sig: Signature): ReadonlyArray; /** * Gets the type of a parameter at a given position in a signature. * Returns `any` if the index is not valid. @@ -3172,6 +3171,7 @@ namespace ts { getResolvedSignature(node: CallLikeExpression, candidatesOutArray?: Signature[], argumentCount?: number): Signature | undefined; /* @internal */ getResolvedSignatureForSignatureHelp(node: CallLikeExpression, candidatesOutArray?: Signature[], argumentCount?: number): Signature | undefined; /* @internal */ getExpandedParameters(sig: Signature): ReadonlyArray; + /* @internal */ hasEffectiveRestParameter(sig: Signature): boolean; getSignatureFromDeclaration(declaration: SignatureDeclaration): Signature | undefined; isImplementationOfOverload(node: SignatureDeclaration): boolean | undefined; isUndefinedSymbol(symbol: Symbol): boolean; diff --git a/src/services/signatureHelp.ts b/src/services/signatureHelp.ts index 5e7b160e326..0c9f76acacb 100644 --- a/src/services/signatureHelp.ts +++ b/src/services/signatureHelp.ts @@ -566,7 +566,7 @@ namespace ts.SignatureHelp { } function itemInfoForParameters(candidateSignature: Signature, checker: TypeChecker, enclosingDeclaration: Node, sourceFile: SourceFile): SignatureHelpItemInfo { - let isVariadic = candidateSignature.hasRestParameter; + const isVariadic = checker.hasEffectiveRestParameter(candidateSignature); const printer = createPrinter({ removeComments: true }); const typeParameterParts = mapToDisplayParts(writer => { if (candidateSignature.typeParameters && candidateSignature.typeParameters.length) {