From 8df1c7ed13aebc71173f160a70adfa92775f1c81 Mon Sep 17 00:00:00 2001 From: Iwata Hidetaka Date: Mon, 28 Nov 2016 23:27:29 +0900 Subject: [PATCH 1/3] add test for #12536 --- .../fourslash/completionForStringLiteral5.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 tests/cases/fourslash/completionForStringLiteral5.ts diff --git a/tests/cases/fourslash/completionForStringLiteral5.ts b/tests/cases/fourslash/completionForStringLiteral5.ts new file mode 100644 index 00000000000..3752734d913 --- /dev/null +++ b/tests/cases/fourslash/completionForStringLiteral5.ts @@ -0,0 +1,15 @@ +/// + +////interface Foo { +//// foo: string; +//// bar: string; +////} +//// +////function f(a: K) { }; +////f("/*1*/ + +goTo.marker('1'); +verify.completionListContains("foo"); +verify.completionListContains("bar"); +verify.memberListCount(2); + From 5f073a63163f969a8f18786128310c8623cc48fc Mon Sep 17 00:00:00 2001 From: Iwata Hidetaka Date: Tue, 29 Nov 2016 10:32:52 +0900 Subject: [PATCH 2/3] expose getApparentType on TypeChecker interface --- src/compiler/checker.ts | 3 ++- src/compiler/types.ts | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index e016d493046..ec2070008f3 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -112,7 +112,8 @@ namespace ts { // we deliberately exclude augmentations // since we are only interested in declarations of the module itself return tryFindAmbientModule(moduleName, /*withAugmentations*/ false); - } + }, + getApparentType }; const tupleTypes: GenericType[] = []; diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 219e7efa90a..b0fd1174930 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2379,6 +2379,7 @@ namespace ts { getAmbientModules(): Symbol[]; tryGetMemberInModuleExports(memberName: string, moduleSymbol: Symbol): Symbol | undefined; + getApparentType(type: Type): Type; /* @internal */ tryFindAmbientModuleWithoutAugmentations(moduleName: string): Symbol; From aaf87735cce8df134c4c515890f7fb82a13948ac Mon Sep 17 00:00:00 2001 From: Iwata Hidetaka Date: Mon, 28 Nov 2016 23:28:23 +0900 Subject: [PATCH 3/3] tsserver: get candidates from (fix #12536) --- src/services/completions.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/services/completions.ts b/src/services/completions.ts index b710aa8cd78..f0daa696474 100644 --- a/src/services/completions.ts +++ b/src/services/completions.ts @@ -244,6 +244,9 @@ namespace ts.Completions { } function addStringLiteralCompletionsFromType(type: Type, result: CompletionEntry[]): void { + if (type && type.flags & TypeFlags.TypeParameter) { + type = typeChecker.getApparentType(type); + } if (!type) { return; }