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] } + ] +});