diff --git a/src/services/codefixes/fixAddMissingMember.ts b/src/services/codefixes/fixAddMissingMember.ts index 2542a0732342b..80f4f51c06a8c 100644 --- a/src/services/codefixes/fixAddMissingMember.ts +++ b/src/services/codefixes/fixAddMissingMember.ts @@ -178,7 +178,7 @@ namespace ts.codefix { const argIndex = findIndex(parent.parent.arguments, arg => arg === parent); if (argIndex < 0) return undefined; - const signature = singleOrUndefined(checker.getSignaturesOfType(checker.getTypeAtLocation(parent.parent.expression), SignatureKind.Call)); + const signature = checker.getResolvedSignature(parent.parent); if (!(signature && signature.declaration && signature.parameters[argIndex])) return undefined; const param = signature.parameters[argIndex].valueDeclaration; diff --git a/tests/cases/fourslash/codeFixAddMissingProperties24.ts b/tests/cases/fourslash/codeFixAddMissingProperties24.ts new file mode 100644 index 0000000000000..92db088dfff90 --- /dev/null +++ b/tests/cases/fourslash/codeFixAddMissingProperties24.ts @@ -0,0 +1,27 @@ +/// + +////interface A { +//// a: number; +//// b: string; +////} +////interface B { +//// c: boolean; +////} +////interface C { +//// a: A; +//// b: B; +////} +////function f(type: T, obj: C[T]): string { +//// return ""; +////} +////[|f("a", {});|] + +verify.codeFix({ + index: 0, + description: ts.Diagnostics.Add_missing_properties.message, + newRangeContent: +`f("a", { + a: 0, + b: "" +});`, +});