diff --git a/src/services/stringCompletions.ts b/src/services/stringCompletions.ts
index cc0b94507d8..27db312c521 100644
--- a/src/services/stringCompletions.ts
+++ b/src/services/stringCompletions.ts
@@ -223,9 +223,7 @@ namespace ts.Completions.StringCompletions {
function stringLiteralCompletionsFromProperties(type: Type | undefined): StringLiteralCompletionsFromProperties | undefined {
return type && {
kind: StringLiteralCompletionKind.Properties,
- symbols: type.getApparentProperties().filter(prop =>
- !isPrivateIdentifierPropertyDeclaration(
- isTransientSymbol(prop) && prop.syntheticOrigin ? prop.syntheticOrigin.valueDeclaration : prop.valueDeclaration)),
+ symbols: filter(type.getApparentProperties(), prop => !(prop.valueDeclaration && isPrivateIdentifierPropertyDeclaration(prop.valueDeclaration))),
hasIndexSignature: hasIndexSignature(type)
};
}
diff --git a/tests/cases/fourslash/completionForStringLiteral14.ts b/tests/cases/fourslash/completionForStringLiteral14.ts
new file mode 100644
index 00000000000..b1a28df23ef
--- /dev/null
+++ b/tests/cases/fourslash/completionForStringLiteral14.ts
@@ -0,0 +1,18 @@
+///
+
+////interface Foo {
+//// a: string;
+//// b: boolean;
+//// c: number;
+////}
+////type Bar = Record["[|/**/|]"];
+
+const replacementSpan = test.ranges()[0]
+verify.completions({
+ marker: "",
+ exact: [
+ { name: "a", replacementSpan },
+ { name: "b", replacementSpan },
+ { name: "c", replacementSpan }
+ ]
+});
diff --git a/tests/cases/fourslash/completionForStringLiteral15.ts b/tests/cases/fourslash/completionForStringLiteral15.ts
new file mode 100644
index 00000000000..3736e5e5b78
--- /dev/null
+++ b/tests/cases/fourslash/completionForStringLiteral15.ts
@@ -0,0 +1,12 @@
+///
+
+////let x: { [_ in "foo"]: string } = {
+//// "[|/**/|]"
+////}
+
+verify.completions({
+ marker: "",
+ exact: [
+ { name: "foo", replacementSpan: test.ranges()[0] }
+ ]
+});