From 84d084f1cc1729223abb992c78ff5715a9222779 Mon Sep 17 00:00:00 2001 From: Ahborkhuja Date: Thu, 4 Sep 2025 14:09:02 +0500 Subject: [PATCH 1/2] Ahborkhuja:fix-private-method --- src/services/codefixes/fixAddMissingMember.ts | 36 +++++++++++++++++-- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/src/services/codefixes/fixAddMissingMember.ts b/src/services/codefixes/fixAddMissingMember.ts index 17ff1280f40c0..7bc6a3395b5c5 100644 --- a/src/services/codefixes/fixAddMissingMember.ts +++ b/src/services/codefixes/fixAddMissingMember.ts @@ -564,11 +564,41 @@ function getActionsForMissingMethodDeclaration(context: CodeFixContext, info: Ty } const methodName = token.text; + const shouldBePrivateByDefault = methodName.startsWith('_'); 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)]; - if (modifierFlags & ModifierFlags.Private) { - actions.unshift(createCodeFixActionWithoutFixAll(fixMissingMember, addMethodDeclarationChanges(ModifierFlags.Private), [Diagnostics.Declare_private_method_0, methodName])); + + // Create the main action - private by default for underscore methods + const defaultModifierFlags = shouldBePrivateByDefault ? (modifierFlags | ModifierFlags.Private) : modifierFlags; + + const actions = [createCodeFixAction( + fixMissingMember, + addMethodDeclarationChanges(defaultModifierFlags), // Remove the & ModifierFlags.Static + [shouldBePrivateByDefault ? Diagnostics.Declare_private_method_0 : + (modifierFlags & ModifierFlags.Static ? Diagnostics.Declare_static_method_0 : Diagnostics.Declare_method_0), + methodName], + fixMissingMember, + Diagnostics.Add_all_missing_members + )]; + + // Only add additional options if the default isn't already private + if ((modifierFlags & ModifierFlags.Private) || methodName.startsWith('_')) { + // For underscore methods, add a regular (non-private) option + if (shouldBePrivateByDefault) { + actions.push(createCodeFixActionWithoutFixAll( + fixMissingMember, + addMethodDeclarationChanges(modifierFlags & ~ModifierFlags.Private), // Remove private flag + [modifierFlags & ModifierFlags.Static ? Diagnostics.Declare_static_method_0 : Diagnostics.Declare_method_0, methodName] + )); + } else { + // For non-underscore methods with private flag, add private option + actions.unshift(createCodeFixActionWithoutFixAll( + fixMissingMember, + addMethodDeclarationChanges(ModifierFlags.Private), + [Diagnostics.Declare_private_method_0, methodName] + )); + } } + return actions; } From 8de74320fdfa70d210c650d7f5d798763166d1d6 Mon Sep 17 00:00:00 2001 From: Ahborkhuja Date: Thu, 4 Sep 2025 14:19:32 +0500 Subject: [PATCH 2/2] formated for dprint --- src/services/codefixes/fixAddMissingMember.ts | 39 ++++++++++--------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/src/services/codefixes/fixAddMissingMember.ts b/src/services/codefixes/fixAddMissingMember.ts index 7bc6a3395b5c5..77cd7bffa2e77 100644 --- a/src/services/codefixes/fixAddMissingMember.ts +++ b/src/services/codefixes/fixAddMissingMember.ts @@ -564,41 +564,44 @@ function getActionsForMissingMethodDeclaration(context: CodeFixContext, info: Ty } const methodName = token.text; - const shouldBePrivateByDefault = methodName.startsWith('_'); + const shouldBePrivateByDefault = methodName.startsWith("_"); const addMethodDeclarationChanges = (modifierFlags: ModifierFlags) => textChanges.ChangeTracker.with(context, t => addMethodDeclaration(context, t, call, token, modifierFlags, parentDeclaration, declSourceFile)); - + // Create the main action - private by default for underscore methods const defaultModifierFlags = shouldBePrivateByDefault ? (modifierFlags | ModifierFlags.Private) : modifierFlags; - + const actions = [createCodeFixAction( - fixMissingMember, + fixMissingMember, addMethodDeclarationChanges(defaultModifierFlags), // Remove the & ModifierFlags.Static - [shouldBePrivateByDefault ? Diagnostics.Declare_private_method_0 : - (modifierFlags & ModifierFlags.Static ? Diagnostics.Declare_static_method_0 : Diagnostics.Declare_method_0), - methodName], - fixMissingMember, - Diagnostics.Add_all_missing_members + [ + shouldBePrivateByDefault ? Diagnostics.Declare_private_method_0 : + (modifierFlags & ModifierFlags.Static ? Diagnostics.Declare_static_method_0 : Diagnostics.Declare_method_0), + methodName, + ], + fixMissingMember, + Diagnostics.Add_all_missing_members, )]; - + // Only add additional options if the default isn't already private - if ((modifierFlags & ModifierFlags.Private) || methodName.startsWith('_')) { + if ((modifierFlags & ModifierFlags.Private) || methodName.startsWith("_")) { // For underscore methods, add a regular (non-private) option if (shouldBePrivateByDefault) { actions.push(createCodeFixActionWithoutFixAll( - fixMissingMember, + fixMissingMember, addMethodDeclarationChanges(modifierFlags & ~ModifierFlags.Private), // Remove private flag - [modifierFlags & ModifierFlags.Static ? Diagnostics.Declare_static_method_0 : Diagnostics.Declare_method_0, methodName] + [modifierFlags & ModifierFlags.Static ? Diagnostics.Declare_static_method_0 : Diagnostics.Declare_method_0, methodName], )); - } else { + } + else { // For non-underscore methods with private flag, add private option actions.unshift(createCodeFixActionWithoutFixAll( - fixMissingMember, - addMethodDeclarationChanges(ModifierFlags.Private), - [Diagnostics.Declare_private_method_0, methodName] + fixMissingMember, + addMethodDeclarationChanges(ModifierFlags.Private), + [Diagnostics.Declare_private_method_0, methodName], )); } } - + return actions; }