Skip to content

Commit 0034de3

Browse files
committed
fix(26141): show completions for string parenthesized types
1 parent 191f4f6 commit 0034de3

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

src/services/stringCompletions.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,10 @@ namespace ts.Completions.StringCompletions {
114114
switch (parent.parent.kind) {
115115
case SyntaxKind.TypeReference:
116116
return { kind: StringLiteralCompletionKind.Types, types: getStringLiteralTypes(typeChecker.getTypeArgumentConstraint(parent as LiteralTypeNode)), isNewIdentifier: false };
117+
case SyntaxKind.ParenthesizedType: {
118+
const typeNode = findAncestor(parent.parent, n => !isParenthesizedTypeNode(n.parent)) as ParenthesizedTypeNode;
119+
return { kind: StringLiteralCompletionKind.Types, types: getStringLiteralTypes(typeChecker.getTypeArgumentConstraint(typeNode)), isNewIdentifier: false };
120+
}
117121
case SyntaxKind.IndexedAccessType:
118122
// Get all apparent property names
119123
// i.e. interface Foo {
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/// <reference path='fourslash.ts'/>
2+
3+
////type T1 = "a" | "b" | "c";
4+
////type T2<T extends T1> = {};
5+
////
6+
////type T3 = T2<"[|/*1*/|]">;
7+
////type T4 = T2<("[|/*2*/|]")>;
8+
////type T5 = T2<(("[|/*3*/|]"))>;
9+
////type T6 = T2<((("[|/*4*/|]")))>;
10+
11+
const [r1, r2, r3, r4] = test.ranges();
12+
verify.completions(
13+
{
14+
marker: "1",
15+
exact: [
16+
{ name: "a", replacementSpan: r1 },
17+
{ name: "b", replacementSpan: r1 },
18+
{ name: "c", replacementSpan: r1 },
19+
]
20+
},
21+
{
22+
marker: "2",
23+
exact: [
24+
{ name: "a", replacementSpan: r2 },
25+
{ name: "b", replacementSpan: r2 },
26+
{ name: "c", replacementSpan: r2 },
27+
]
28+
},
29+
{
30+
marker: "3",
31+
exact: [
32+
{ name: "a", replacementSpan: r3 },
33+
{ name: "b", replacementSpan: r3 },
34+
{ name: "c", replacementSpan: r3 },
35+
]
36+
},
37+
{
38+
marker: "4",
39+
exact: [
40+
{ name: "a", replacementSpan: r4 },
41+
{ name: "b", replacementSpan: r4 },
42+
{ name: "c", replacementSpan: r4 },
43+
]
44+
}
45+
);

0 commit comments

Comments
 (0)