From 2cf7295c4ee1a1864742287138416c502ec84f55 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Wed, 6 Dec 2017 16:21:18 -0800 Subject: [PATCH] Fix #20520 --- src/services/codefixes/inferFromUsage.ts | 9 +++++++-- tests/cases/fourslash/incompleteFunctionCallCodefix2.ts | 7 +++++++ 2 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 tests/cases/fourslash/incompleteFunctionCallCodefix2.ts diff --git a/src/services/codefixes/inferFromUsage.ts b/src/services/codefixes/inferFromUsage.ts index d7bfd1b621f..25236318612 100644 --- a/src/services/codefixes/inferFromUsage.ts +++ b/src/services/codefixes/inferFromUsage.ts @@ -196,8 +196,9 @@ namespace ts.codefix { sourceFile, token.getStart(sourceFile)); - Debug.assert(!!references, "Found no references!"); - Debug.assert(references.length === 1, "Found more references than expected"); + if (!references || references.length !== 1) { + return []; + } return references[0].references.map(r => getTokenAtPosition(program.getSourceFile(r.fileName), r.textSpan.start, /*includeJsDocComment*/ false)); } @@ -286,6 +287,10 @@ namespace ts.codefix { } export function inferTypeForParametersFromReferences(references: Identifier[], declaration: FunctionLikeDeclaration, checker: TypeChecker, cancellationToken: CancellationToken): (Type | undefined)[] | undefined { + if (references.length === 0) { + return undefined; + } + if (declaration.parameters) { const usageContext: UsageContext = {}; for (const reference of references) { diff --git a/tests/cases/fourslash/incompleteFunctionCallCodefix2.ts b/tests/cases/fourslash/incompleteFunctionCallCodefix2.ts new file mode 100644 index 00000000000..c1bc731541f --- /dev/null +++ b/tests/cases/fourslash/incompleteFunctionCallCodefix2.ts @@ -0,0 +1,7 @@ +/// + +// @noImplicitAny: true +//// function f(new C(100, 3, undefined) + +verify.not.codeFixAvailable([]); +