From aef2e0a238453c12ee5ca2bc2090c44d13bf8408 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Wed, 18 Dec 2019 07:20:01 -0800 Subject: [PATCH] Fix implement interface codefix for synthetic member symbols (#35718) --- .../fixClassIncorrectlyImplementsInterface.ts | 2 +- .../codefixClassImplementInterface_omit.ts | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 tests/cases/fourslash/codefixClassImplementInterface_omit.ts diff --git a/src/services/codefixes/fixClassIncorrectlyImplementsInterface.ts b/src/services/codefixes/fixClassIncorrectlyImplementsInterface.ts index ddd5bacea26..0735e85bc70 100644 --- a/src/services/codefixes/fixClassIncorrectlyImplementsInterface.ts +++ b/src/services/codefixes/fixClassIncorrectlyImplementsInterface.ts @@ -34,7 +34,7 @@ namespace ts.codefix { } function symbolPointsToNonPrivateMember (symbol: Symbol) { - return !(getModifierFlags(symbol.valueDeclaration) & ModifierFlags.Private); + return !symbol.valueDeclaration || !(getModifierFlags(symbol.valueDeclaration) & ModifierFlags.Private); } function addMissingDeclarations( diff --git a/tests/cases/fourslash/codefixClassImplementInterface_omit.ts b/tests/cases/fourslash/codefixClassImplementInterface_omit.ts new file mode 100644 index 00000000000..f4ff82028d4 --- /dev/null +++ b/tests/cases/fourslash/codefixClassImplementInterface_omit.ts @@ -0,0 +1,30 @@ +/// + +////interface One { +//// a: number; +//// b: string; +////} +//// +////interface Two extends Omit { +//// c: boolean; +////} +//// +////class TwoStore implements Two {[| |]} + +verify.codeFix({ + description: "Implement interface 'Two'", + newFileContent: +`interface One { + a: number; + b: string; +} + +interface Two extends Omit { + c: boolean; +} + +class TwoStore implements Two { + c: boolean; + b: string; +}`, +});