diff --git a/src/services/codefixes/fixAddMissingMember.ts b/src/services/codefixes/fixAddMissingMember.ts index 2231cd0509a..5c9efb68258 100644 --- a/src/services/codefixes/fixAddMissingMember.ts +++ b/src/services/codefixes/fixAddMissingMember.ts @@ -538,11 +538,6 @@ function getActionsForMissingMethodDeclaration(context: CodeFixContext, info: Ty return undefined; } - // Private methods are not implemented yet. - if (isPrivateIdentifier(token)) { - return undefined; - } - const methodName = token.text; const addMethodDeclarationChanges = (modifierFlags: ModifierFlags) => textChanges.ChangeTracker.with(context, t => addMethodDeclaration(context, t, call, token, modifierFlags, parentDeclaration, declSourceFile)); const actions = [createCodeFixAction(fixMissingMember, addMethodDeclarationChanges(modifierFlags & ModifierFlags.Static), [modifierFlags & ModifierFlags.Static ? Diagnostics.Declare_static_method_0 : Diagnostics.Declare_method_0, methodName], fixMissingMember, Diagnostics.Add_all_missing_members)]; @@ -556,7 +551,7 @@ function addMethodDeclaration( context: CodeFixContextBase, changes: textChanges.ChangeTracker, callExpression: CallExpression, - name: Identifier, + name: Identifier | PrivateIdentifier, modifierFlags: ModifierFlags, parentDeclaration: ClassLikeDeclaration | InterfaceDeclaration | TypeLiteralNode, sourceFile: SourceFile, diff --git a/src/services/codefixes/helpers.ts b/src/services/codefixes/helpers.ts index 3365c36dbf0..39215e7185f 100644 --- a/src/services/codefixes/helpers.ts +++ b/src/services/codefixes/helpers.ts @@ -69,6 +69,7 @@ import { ObjectLiteralExpression, ObjectType, ParameterDeclaration, + PrivateIdentifier, Program, PropertyAssignment, PropertyDeclaration, @@ -464,7 +465,7 @@ export function createSignatureDeclarationFromCallExpression( context: CodeFixContextBase, importAdder: ImportAdder, call: CallExpression, - name: Identifier | string, + name: Identifier | PrivateIdentifier | string, modifierFlags: ModifierFlags, contextNode: Node ): MethodDeclaration | FunctionDeclaration | MethodSignature { @@ -517,6 +518,7 @@ export function createSignatureDeclarationFromCallExpression( type === undefined ? factory.createKeywordTypeNode(SyntaxKind.UnknownKeyword) : type ); case SyntaxKind.FunctionDeclaration: + Debug.assert(typeof name === "string" || isIdentifier(name), "Unexpected name"); return factory.createFunctionDeclaration( modifiers, asteriskToken, diff --git a/tests/cases/fourslash/codeFixAddMissingMember29.ts b/tests/cases/fourslash/codeFixAddMissingMember29.ts new file mode 100644 index 00000000000..cce9b1c56f8 --- /dev/null +++ b/tests/cases/fourslash/codeFixAddMissingMember29.ts @@ -0,0 +1,21 @@ +/// + +////class C { +//// constructor() { +//// this.#foo(); +//// } +////} + +verify.codeFix({ + description: [ts.Diagnostics.Declare_method_0.message, "#foo"], + index: 0, + newFileContent: +`class C { + constructor() { + this.#foo(); + } + #foo() { + throw new Error("Method not implemented."); + } +}`, +});