Skip to content

Commit ce43ebc

Browse files
authored
Fix off-by-one truncation in union type display (#3658)
1 parent 56ab4af commit ce43ebc

10 files changed

Lines changed: 336 additions & 14 deletions

internal/checker/nodebuilderimpl.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -380,11 +380,12 @@ func (b *NodeBuilderImpl) mapToTypeNodes(list []*Type, isBareList bool) *ast.Nod
380380
result := make([]*ast.Node, 0, len(list))
381381

382382
for i, t := range list {
383-
if b.checkTruncationLength() && (i+2 < len(list)-1) {
383+
displayIndex := i + 1
384+
if b.checkTruncationLength() && (displayIndex+2 < len(list)-1) {
384385
if b.ctx.flags&nodebuilder.FlagsNoTruncation != 0 {
385-
result = append(result, b.e.AddSyntheticLeadingComment(b.f.NewKeywordTypeNode(ast.KindAnyKeyword), ast.KindMultiLineCommentTrivia, fmt.Sprintf("... %d more elided ...", len(list)-i), false /*hasTrailingNewLine*/))
386+
result = append(result, b.e.AddSyntheticLeadingComment(b.f.NewKeywordTypeNode(ast.KindAnyKeyword), ast.KindMultiLineCommentTrivia, fmt.Sprintf("... %d more elided ...", len(list)-displayIndex), false /*hasTrailingNewLine*/))
386387
} else {
387-
text := fmt.Sprintf("... %d more ...", len(list)-i)
388+
text := fmt.Sprintf("... %d more ...", len(list)-displayIndex)
388389
result = append(result, b.f.NewTypeReferenceNode(b.f.NewIdentifier(text), nil /*typeArguments*/))
389390
}
390391
typeNode := b.typeToTypeNode(list[len(list)-1])

internal/fourslash/_scripts/failingTests.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,6 @@ TestQualifyModuleTypeNames
298298
TestQuickInfo_notInsideComment
299299
TestQuickinfo01
300300
TestQuickInfoBindingPatternInJsdocNoCrash1
301-
TestQuickInfoCanBeTruncated
302301
TestQuickInfoCloduleWithRecursiveReference
303302
TestQuickInfoContextuallyTypedSignatureOptionalParameterFromIntersection1
304303
TestQuickInfoContextualTyping
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
unionElementErrorTruncation.ts(26,1): error TS7053: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type '{ id: "00"; } | { id: "01"; } | { id: "02"; } | { id: "03"; } | { id: "04"; } | { id: "05"; } | { id: "06"; } | { id: "07"; } | { id: "08"; } | { id: "09"; } | { id: "10"; } | { id: "11"; } | { id: "12"; } | { id: "13"; } | { id: "14"; } | { ...; } | { ...; } | { ...; } | { ...; }'.
2+
No index signature with a parameter of type 'string' was found on type '{ id: "00"; } | { id: "01"; } | { id: "02"; } | { id: "03"; } | { id: "04"; } | { id: "05"; } | { id: "06"; } | { id: "07"; } | { id: "08"; } | { id: "09"; } | { id: "10"; } | { id: "11"; } | { id: "12"; } | { id: "13"; } | { id: "14"; } | { ...; } | { ...; } | { ...; } | { ...; }'.
3+
unionElementErrorTruncation.ts(27,1): error TS7053: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type '{ id: "00"; } | { id: "01"; } | { id: "02"; } | { id: "03"; } | { id: "04"; } | { id: "05"; } | { id: "06"; } | { id: "07"; } | { id: "08"; } | { id: "09"; } | { id: "10"; } | { id: "11"; } | { id: "12"; } | { id: "13"; } | { id: "14"; } | ... 4 more ... | { ...; }'.
4+
No index signature with a parameter of type 'string' was found on type '{ id: "00"; } | { id: "01"; } | { id: "02"; } | { id: "03"; } | { id: "04"; } | { id: "05"; } | { id: "06"; } | { id: "07"; } | { id: "08"; } | { id: "09"; } | { id: "10"; } | { id: "11"; } | { id: "12"; } | { id: "13"; } | { id: "14"; } | ... 4 more ... | { ...; }'.
5+
6+
7+
==== unionElementErrorTruncation.ts (2 errors) ====
8+
declare let s: string;
9+
declare let o1:
10+
| { id: "00" }
11+
| { id: "01" }
12+
| { id: "02" }
13+
| { id: "03" }
14+
| { id: "04" }
15+
| { id: "05" }
16+
| { id: "06" }
17+
| { id: "07" }
18+
| { id: "08" }
19+
| { id: "09" }
20+
| { id: "10" }
21+
| { id: "11" }
22+
| { id: "12" }
23+
| { id: "13" }
24+
| { id: "14" }
25+
| { id: "15" }
26+
| { id: "16" }
27+
| { id: "17" }
28+
| { id: "18" };
29+
declare let o2:
30+
| typeof o1
31+
| { id: "19" };
32+
33+
o1[s];
34+
~~~~~
35+
!!! error TS7053: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type '{ id: "00"; } | { id: "01"; } | { id: "02"; } | { id: "03"; } | { id: "04"; } | { id: "05"; } | { id: "06"; } | { id: "07"; } | { id: "08"; } | { id: "09"; } | { id: "10"; } | { id: "11"; } | { id: "12"; } | { id: "13"; } | { id: "14"; } | { ...; } | { ...; } | { ...; } | { ...; }'.
36+
!!! error TS7053: No index signature with a parameter of type 'string' was found on type '{ id: "00"; } | { id: "01"; } | { id: "02"; } | { id: "03"; } | { id: "04"; } | { id: "05"; } | { id: "06"; } | { id: "07"; } | { id: "08"; } | { id: "09"; } | { id: "10"; } | { id: "11"; } | { id: "12"; } | { id: "13"; } | { id: "14"; } | { ...; } | { ...; } | { ...; } | { ...; }'.
37+
o2[s];
38+
~~~~~
39+
!!! error TS7053: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type '{ id: "00"; } | { id: "01"; } | { id: "02"; } | { id: "03"; } | { id: "04"; } | { id: "05"; } | { id: "06"; } | { id: "07"; } | { id: "08"; } | { id: "09"; } | { id: "10"; } | { id: "11"; } | { id: "12"; } | { id: "13"; } | { id: "14"; } | ... 4 more ... | { ...; }'.
40+
!!! error TS7053: No index signature with a parameter of type 'string' was found on type '{ id: "00"; } | { id: "01"; } | { id: "02"; } | { id: "03"; } | { id: "04"; } | { id: "05"; } | { id: "06"; } | { id: "07"; } | { id: "08"; } | { id: "09"; } | { id: "10"; } | { id: "11"; } | { id: "12"; } | { id: "13"; } | { id: "14"; } | ... 4 more ... | { ...; }'.
41+
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
//// [tests/cases/compiler/unionElementErrorTruncation.ts] ////
2+
3+
//// [unionElementErrorTruncation.ts]
4+
declare let s: string;
5+
declare let o1:
6+
| { id: "00" }
7+
| { id: "01" }
8+
| { id: "02" }
9+
| { id: "03" }
10+
| { id: "04" }
11+
| { id: "05" }
12+
| { id: "06" }
13+
| { id: "07" }
14+
| { id: "08" }
15+
| { id: "09" }
16+
| { id: "10" }
17+
| { id: "11" }
18+
| { id: "12" }
19+
| { id: "13" }
20+
| { id: "14" }
21+
| { id: "15" }
22+
| { id: "16" }
23+
| { id: "17" }
24+
| { id: "18" };
25+
declare let o2:
26+
| typeof o1
27+
| { id: "19" };
28+
29+
o1[s];
30+
o2[s];
31+
32+
33+
//// [unionElementErrorTruncation.js]
34+
"use strict";
35+
o1[s];
36+
o2[s];
37+
38+
39+
//// [unionElementErrorTruncation.d.ts]
40+
declare let s: string;
41+
declare let o1: {
42+
id: "00";
43+
} | {
44+
id: "01";
45+
} | {
46+
id: "02";
47+
} | {
48+
id: "03";
49+
} | {
50+
id: "04";
51+
} | {
52+
id: "05";
53+
} | {
54+
id: "06";
55+
} | {
56+
id: "07";
57+
} | {
58+
id: "08";
59+
} | {
60+
id: "09";
61+
} | {
62+
id: "10";
63+
} | {
64+
id: "11";
65+
} | {
66+
id: "12";
67+
} | {
68+
id: "13";
69+
} | {
70+
id: "14";
71+
} | {
72+
id: "15";
73+
} | {
74+
id: "16";
75+
} | {
76+
id: "17";
77+
} | {
78+
id: "18";
79+
};
80+
declare let o2: typeof o1 | {
81+
id: "19";
82+
};
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
//// [tests/cases/compiler/unionElementErrorTruncation.ts] ////
2+
3+
=== unionElementErrorTruncation.ts ===
4+
declare let s: string;
5+
>s : Symbol(s, Decl(unionElementErrorTruncation.ts, 0, 11))
6+
7+
declare let o1:
8+
>o1 : Symbol(o1, Decl(unionElementErrorTruncation.ts, 1, 11))
9+
10+
| { id: "00" }
11+
>id : Symbol(id, Decl(unionElementErrorTruncation.ts, 2, 7))
12+
13+
| { id: "01" }
14+
>id : Symbol(id, Decl(unionElementErrorTruncation.ts, 3, 7))
15+
16+
| { id: "02" }
17+
>id : Symbol(id, Decl(unionElementErrorTruncation.ts, 4, 7))
18+
19+
| { id: "03" }
20+
>id : Symbol(id, Decl(unionElementErrorTruncation.ts, 5, 7))
21+
22+
| { id: "04" }
23+
>id : Symbol(id, Decl(unionElementErrorTruncation.ts, 6, 7))
24+
25+
| { id: "05" }
26+
>id : Symbol(id, Decl(unionElementErrorTruncation.ts, 7, 7))
27+
28+
| { id: "06" }
29+
>id : Symbol(id, Decl(unionElementErrorTruncation.ts, 8, 7))
30+
31+
| { id: "07" }
32+
>id : Symbol(id, Decl(unionElementErrorTruncation.ts, 9, 7))
33+
34+
| { id: "08" }
35+
>id : Symbol(id, Decl(unionElementErrorTruncation.ts, 10, 7))
36+
37+
| { id: "09" }
38+
>id : Symbol(id, Decl(unionElementErrorTruncation.ts, 11, 7))
39+
40+
| { id: "10" }
41+
>id : Symbol(id, Decl(unionElementErrorTruncation.ts, 12, 7))
42+
43+
| { id: "11" }
44+
>id : Symbol(id, Decl(unionElementErrorTruncation.ts, 13, 7))
45+
46+
| { id: "12" }
47+
>id : Symbol(id, Decl(unionElementErrorTruncation.ts, 14, 7))
48+
49+
| { id: "13" }
50+
>id : Symbol(id, Decl(unionElementErrorTruncation.ts, 15, 7))
51+
52+
| { id: "14" }
53+
>id : Symbol(id, Decl(unionElementErrorTruncation.ts, 16, 7))
54+
55+
| { id: "15" }
56+
>id : Symbol(id, Decl(unionElementErrorTruncation.ts, 17, 7))
57+
58+
| { id: "16" }
59+
>id : Symbol(id, Decl(unionElementErrorTruncation.ts, 18, 7))
60+
61+
| { id: "17" }
62+
>id : Symbol(id, Decl(unionElementErrorTruncation.ts, 19, 7))
63+
64+
| { id: "18" };
65+
>id : Symbol(id, Decl(unionElementErrorTruncation.ts, 20, 7))
66+
67+
declare let o2:
68+
>o2 : Symbol(o2, Decl(unionElementErrorTruncation.ts, 21, 11))
69+
70+
| typeof o1
71+
>o1 : Symbol(o1, Decl(unionElementErrorTruncation.ts, 1, 11))
72+
73+
| { id: "19" };
74+
>id : Symbol(id, Decl(unionElementErrorTruncation.ts, 23, 7))
75+
76+
o1[s];
77+
>o1 : Symbol(o1, Decl(unionElementErrorTruncation.ts, 1, 11))
78+
>s : Symbol(s, Decl(unionElementErrorTruncation.ts, 0, 11))
79+
80+
o2[s];
81+
>o2 : Symbol(o2, Decl(unionElementErrorTruncation.ts, 21, 11))
82+
>s : Symbol(s, Decl(unionElementErrorTruncation.ts, 0, 11))
83+
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
//// [tests/cases/compiler/unionElementErrorTruncation.ts] ////
2+
3+
=== unionElementErrorTruncation.ts ===
4+
declare let s: string;
5+
>s : string
6+
7+
declare let o1:
8+
>o1 : { id: "00"; } | { id: "01"; } | { id: "02"; } | { id: "03"; } | { id: "04"; } | { id: "05"; } | { id: "06"; } | { id: "07"; } | { id: "08"; } | { id: "09"; } | { id: "10"; } | { id: "11"; } | { id: "12"; } | { id: "13"; } | { id: "14"; } | { id: "15"; } | { id: "16"; } | { id: "17"; } | { id: "18"; }
9+
10+
| { id: "00" }
11+
>id : "00"
12+
13+
| { id: "01" }
14+
>id : "01"
15+
16+
| { id: "02" }
17+
>id : "02"
18+
19+
| { id: "03" }
20+
>id : "03"
21+
22+
| { id: "04" }
23+
>id : "04"
24+
25+
| { id: "05" }
26+
>id : "05"
27+
28+
| { id: "06" }
29+
>id : "06"
30+
31+
| { id: "07" }
32+
>id : "07"
33+
34+
| { id: "08" }
35+
>id : "08"
36+
37+
| { id: "09" }
38+
>id : "09"
39+
40+
| { id: "10" }
41+
>id : "10"
42+
43+
| { id: "11" }
44+
>id : "11"
45+
46+
| { id: "12" }
47+
>id : "12"
48+
49+
| { id: "13" }
50+
>id : "13"
51+
52+
| { id: "14" }
53+
>id : "14"
54+
55+
| { id: "15" }
56+
>id : "15"
57+
58+
| { id: "16" }
59+
>id : "16"
60+
61+
| { id: "17" }
62+
>id : "17"
63+
64+
| { id: "18" };
65+
>id : "18"
66+
67+
declare let o2:
68+
>o2 : { id: "00"; } | { id: "01"; } | { id: "02"; } | { id: "03"; } | { id: "04"; } | { id: "05"; } | { id: "06"; } | { id: "07"; } | { id: "08"; } | { id: "09"; } | { id: "10"; } | { id: "11"; } | { id: "12"; } | { id: "13"; } | { id: "14"; } | { id: "15"; } | { id: "16"; } | { id: "17"; } | { id: "18"; } | { id: "19"; }
69+
70+
| typeof o1
71+
>o1 : { id: "00"; } | { id: "01"; } | { id: "02"; } | { id: "03"; } | { id: "04"; } | { id: "05"; } | { id: "06"; } | { id: "07"; } | { id: "08"; } | { id: "09"; } | { id: "10"; } | { id: "11"; } | { id: "12"; } | { id: "13"; } | { id: "14"; } | { id: "15"; } | { id: "16"; } | { id: "17"; } | { id: "18"; }
72+
73+
| { id: "19" };
74+
>id : "19"
75+
76+
o1[s];
77+
>o1[s] : any
78+
>o1 : { id: "00"; } | { id: "01"; } | { id: "02"; } | { id: "03"; } | { id: "04"; } | { id: "05"; } | { id: "06"; } | { id: "07"; } | { id: "08"; } | { id: "09"; } | { id: "10"; } | { id: "11"; } | { id: "12"; } | { id: "13"; } | { id: "14"; } | { id: "15"; } | { id: "16"; } | { id: "17"; } | { id: "18"; }
79+
>s : string
80+
81+
o2[s];
82+
>o2[s] : any
83+
>o2 : { id: "00"; } | { id: "01"; } | { id: "02"; } | { id: "03"; } | { id: "04"; } | { id: "05"; } | { id: "06"; } | { id: "07"; } | { id: "08"; } | { id: "09"; } | { id: "10"; } | { id: "11"; } | { id: "12"; } | { id: "13"; } | { id: "14"; } | { id: "15"; } | { id: "16"; } | { id: "17"; } | { id: "18"; } | { id: "19"; }
84+
>s : string
85+

testdata/baselines/reference/fourslash/quickInfo/quickinfoVerbosityNoErrorTruncation1.baseline

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44
// ^
55
// | ----------------------------------------------------------------------
66
// | ```typescript
7-
// | type T = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, ... 5 more ..., "now truncating"]
7+
// | type T = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, ... 4 more ..., "now truncating"]
88
// | ```
99
// |
1010
// | (verbosity level: 1)
1111
// | ----------------------------------------------------------------------
1212
// ^
1313
// | ----------------------------------------------------------------------
1414
// | ```typescript
15-
// | type T = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, ... 5 more ..., "now truncating"]
15+
// | type T = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, ... 4 more ..., "now truncating"]
1616
// | ```
1717
// |
1818
// | (verbosity level: 0)
@@ -51,7 +51,7 @@
5151
"hover": {
5252
"contents": {
5353
"kind": "markdown",
54-
"value": "```typescript\ntype T = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, ... 5 more ..., \"now truncating\"]\n```\n"
54+
"value": "```typescript\ntype T = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, ... 4 more ..., \"now truncating\"]\n```\n"
5555
},
5656
"range": {
5757
"start": {
@@ -81,7 +81,7 @@
8181
"hover": {
8282
"contents": {
8383
"kind": "markdown",
84-
"value": "```typescript\ntype T = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, ... 5 more ..., \"now truncating\"]\n```\n"
84+
"value": "```typescript\ntype T = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, ... 4 more ..., \"now truncating\"]\n```\n"
8585
},
8686
"range": {
8787
"start": {

0 commit comments

Comments
 (0)