diff --git a/src/services/completions.ts b/src/services/completions.ts index e9a38fb1516..bf7ff041f2d 100644 --- a/src/services/completions.ts +++ b/src/services/completions.ts @@ -1566,7 +1566,7 @@ namespace ts.Completions { // If you're in an interface you don't want to repeat things from super-interface. So just stop here. if (!isClassLike(decl)) return GlobalsSearch.Success; - const classElement = contextToken.parent; + const classElement = contextToken.kind === SyntaxKind.SemicolonToken ? contextToken.parent.parent : contextToken.parent; let classElementModifierFlags = isClassElement(classElement) ? getModifierFlags(classElement) : ModifierFlags.None; // If this is context token is not something we are editing now, consider if this would lead to be modifier if (contextToken.kind === SyntaxKind.Identifier && !isCurrentlyEditingNode(contextToken)) { diff --git a/tests/cases/fourslash/completionsClassPropertiesAfterPrivateProperty.ts b/tests/cases/fourslash/completionsClassPropertiesAfterPrivateProperty.ts new file mode 100644 index 00000000000..2efd70110b9 --- /dev/null +++ b/tests/cases/fourslash/completionsClassPropertiesAfterPrivateProperty.ts @@ -0,0 +1,12 @@ +/// + +//// interface X { +//// bla: string; +//// } +//// class Y implements X { +//// private blub = ""; +//// /**/ +//// } + + +verify.completions({ marker: "", includes: "bla", isNewIdentifierLocation: true });