diff --git a/src/services/completions.ts b/src/services/completions.ts
index 2066c485ac..bb08fe7d54 100644
--- a/src/services/completions.ts
+++ b/src/services/completions.ts
@@ -2427,7 +2427,8 @@ namespace ts.Completions {
return baseSymbols.filter(propertySymbol =>
!existingMemberNames.has(propertySymbol.escapedName) &&
!!propertySymbol.declarations &&
- !(getDeclarationModifierFlagsFromSymbol(propertySymbol) & ModifierFlags.Private));
+ !(getDeclarationModifierFlagsFromSymbol(propertySymbol) & ModifierFlags.Private) &&
+ !isPrivateIdentifierPropertyDeclaration(propertySymbol.valueDeclaration));
}
/**
diff --git a/tests/cases/fourslash/completionListClassPrivateFields.ts b/tests/cases/fourslash/completionListClassPrivateFields.ts
new file mode 100644
index 0000000000..f7638047a6
--- /dev/null
+++ b/tests/cases/fourslash/completionListClassPrivateFields.ts
@@ -0,0 +1,15 @@
+///
+
+////class A {
+//// #private = 1;
+////}
+////
+////class B extends A {
+//// /**/
+////}
+
+verify.completions({
+ marker: "",
+ exact: completion.classElementKeywords,
+ isNewIdentifierLocation: true
+});
diff --git a/tests/cases/fourslash/completionListClassPrivateFields_JS.ts b/tests/cases/fourslash/completionListClassPrivateFields_JS.ts
new file mode 100644
index 0000000000..49c8d05af6
--- /dev/null
+++ b/tests/cases/fourslash/completionListClassPrivateFields_JS.ts
@@ -0,0 +1,21 @@
+///
+
+// @allowJs: true
+// @Filename: a.js
+////class A {
+//// #private = 1;
+////}
+////
+////class B extends A {
+//// /**/
+////}
+
+verify.completions({
+ marker: "",
+ exact: [
+ { name: "A", sortText: completion.SortText.JavascriptIdentifiers },
+ { name: "B", sortText: completion.SortText.JavascriptIdentifiers },
+ ...completion.classElementInJsKeywords
+ ],
+ isNewIdentifierLocation: true
+});