From d07102e56765dd27ba7f56f7f7d6ce18b7bf01cc Mon Sep 17 00:00:00 2001 From: Andy Date: Mon, 2 Apr 2018 16:20:51 -0700 Subject: [PATCH] Fix bug: don't return string literal completions if there's no contextual type (#23079) --- src/services/completions.ts | 2 +- .../fourslash/completionsStringLiteral_objectProperty.ts | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 tests/cases/fourslash/completionsStringLiteral_objectProperty.ts diff --git a/src/services/completions.ts b/src/services/completions.ts index 1f714960865..209d04f763e 100644 --- a/src/services/completions.ts +++ b/src/services/completions.ts @@ -388,7 +388,7 @@ namespace ts.Completions { // '/*completion position*/' // }); const type = typeChecker.getContextualType(node.parent.parent); - return { kind: StringLiteralCompletionKind.Properties, symbols: type && type.getApparentProperties() }; + return type && { kind: StringLiteralCompletionKind.Properties, symbols: type.getApparentProperties() }; } return fromContextualType(); diff --git a/tests/cases/fourslash/completionsStringLiteral_objectProperty.ts b/tests/cases/fourslash/completionsStringLiteral_objectProperty.ts new file mode 100644 index 00000000000..d2ba8dd3122 --- /dev/null +++ b/tests/cases/fourslash/completionsStringLiteral_objectProperty.ts @@ -0,0 +1,8 @@ +/// + +////const x = { "/**/" }; + +// We specifically filter out any array-like types. +// Private members will be excluded by `createUnionOrIntersectionProperty`. +goTo.marker(""); +verify.completionListIsEmpty();