Skip to content

Commit 11b1a4f

Browse files
committed
When detecting arrow '<T extends' is not guaranteed to be type parameter of arrow as it could be type assertion with conditional type
Fixes #748
1 parent cf7b1ec commit 11b1a4f

11 files changed

+526
-139
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ variables:
6868
typeArguments: '<\s*{{typeArgumentsStart}}({{typeArgumentsInnerExpressionPart}}|\<\s*{{typeArgumentsStart}}(({{typeArgumentsInnerExpressionPart}}|\<\s*{{typeArgumentsStart}}({{typeArgumentsInnerExpressionPart}})*(?<!=)\>))*(?<!=)\>)*(?<!=)>'
6969
functionCallLookup: \s*(\?\.\s*)?({{typeArguments}}\s*)?\(
7070
returnTypeOfArrow: \s*([^<>\(\)\{\}]|\<([^<>]|\<[^<>]+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+
71+
typeparamertStartOfArrow: ''
7172
arrowLookup: |-
7273
# sure shot arrow functions even if => is on new line
7374
(
@@ -78,9 +79,7 @@ variables:
7879
((\.\.\.\s*)?{{identifier}}\s*:) # [(]param: | [(]...param:
7980
)
8081
) |
81-
(
82-
[<]\s*{{identifier}}\s+extends\s*[^=>] # < typeparam extends
83-
) |
82+
{{typeparamertStartOfArrow}}
8483
# arrow function possible to detect only with => on same line
8584
(
8685
{{typeParameters}}? # typeparameters

TypeScript.tmLanguage

Lines changed: 13 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -634,9 +634,7 @@
634634
((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
635635
)
636636
) |
637-
(
638-
[&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends
639-
) |
637+
640638
# arrow function possible to detect only with =&gt; on same line
641639
(
642640
(&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
@@ -676,9 +674,7 @@
676674
((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
677675
)
678676
) |
679-
(
680-
[&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends
681-
) |
677+
682678
# arrow function possible to detect only with =&gt; on same line
683679
(
684680
(&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
@@ -796,9 +792,7 @@
796792
((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
797793
)
798794
) |
799-
(
800-
[&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends
801-
) |
795+
802796
# arrow function possible to detect only with =&gt; on same line
803797
(
804798
(&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
@@ -838,9 +832,7 @@
838832
((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
839833
)
840834
) |
841-
(
842-
[&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends
843-
) |
835+
844836
# arrow function possible to detect only with =&gt; on same line
845837
(
846838
(&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
@@ -1461,9 +1453,7 @@
14611453
((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
14621454
)
14631455
) |
1464-
(
1465-
[&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends
1466-
) |
1456+
14671457
# arrow function possible to detect only with =&gt; on same line
14681458
(
14691459
(&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
@@ -1503,9 +1493,7 @@
15031493
((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
15041494
)
15051495
) |
1506-
(
1507-
[&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends
1508-
) |
1496+
15091497
# arrow function possible to detect only with =&gt; on same line
15101498
(
15111499
(&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
@@ -1923,9 +1911,7 @@
19231911
((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
19241912
)
19251913
) |
1926-
(
1927-
[&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends
1928-
) |
1914+
19291915
# arrow function possible to detect only with =&gt; on same line
19301916
(
19311917
(&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
@@ -1965,9 +1951,7 @@
19651951
((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
19661952
)
19671953
) |
1968-
(
1969-
[&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends
1970-
) |
1954+
19711955
# arrow function possible to detect only with =&gt; on same line
19721956
(
19731957
(&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
@@ -2524,9 +2508,7 @@
25242508
((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
25252509
)
25262510
) |
2527-
(
2528-
[&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends
2529-
) |
2511+
25302512
# arrow function possible to detect only with =&gt; on same line
25312513
(
25322514
(&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
@@ -4356,9 +4338,7 @@
43564338
((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
43574339
)
43584340
) |
4359-
(
4360-
[&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends
4361-
) |
4341+
43624342
# arrow function possible to detect only with =&gt; on same line
43634343
(
43644344
(&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
@@ -4916,9 +4896,7 @@
49164896
((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
49174897
)
49184898
) |
4919-
(
4920-
[&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends
4921-
) |
4899+
49224900
# arrow function possible to detect only with =&gt; on same line
49234901
(
49244902
(&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
@@ -4958,9 +4936,7 @@
49584936
((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
49594937
)
49604938
) |
4961-
(
4962-
[&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends
4963-
) |
4939+
49644940
# arrow function possible to detect only with =&gt; on same line
49654941
(
49664942
(&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters
@@ -6277,9 +6253,7 @@
62776253
((\.\.\.\s*)?[_$[:alpha:]][_$[:alnum:]]*\s*:) # [(]param: | [(]...param:
62786254
)
62796255
) |
6280-
(
6281-
[&lt;]\s*[_$[:alpha:]][_$[:alnum:]]*\s+extends\s*[^=&gt;] # &lt; typeparam extends
6282-
) |
6256+
62836257
# arrow function possible to detect only with =&gt; on same line
62846258
(
62856259
(&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;]|\&lt;\s*([_$[:alpha:]]|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\]))([^=&lt;&gt;]|=[^&lt;])*\&gt;)*\&gt;)*&gt;\s*)? # typeparameters

TypeScriptReact.YAML-tmLanguage

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ fileTypes: [tsx]
99
uuid: 805375ec-d614-41f5-8993-5843fe63ea82
1010

1111
variables:
12+
# because tsx cannot have cast expression, we can say <T extends starts the type parameter of arrow
13+
typeparamertStartOfArrow: |-
14+
(
15+
[<]\s*{{identifier}}\s+extends\s*[^=>] # < typeparam extends
16+
) |
1217
#possiblyMultilineArrowExpressionBeforeEndOfLine: ({{typeParameters}})?\(
1318
possiblyMultilineArrow: ((<\s*$)|([\(]\s*([\{\[]\s*)?$)) # during lookup treat ( followed by line end as arrow
1419
jsxTagOrAtrributeIdentifier: '[_$[:alpha:]][-_$[:alnum:].]*'

tests/baselines/Issue637.baseline.txt

Lines changed: 0 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,6 @@ original file
22
-----------------------------------
33
interface I {}
44

5-
const goodHighlighting = <T extends I>(
6-
arg: T
7-
) => {
8-
const a = arg
9-
return a
10-
}
11-
125
const goodHighlighting2 = <
136
T
147
>(
@@ -46,89 +39,6 @@ Grammar: TypeScript.tmLanguage
4639
>
4740
^
4841
source.ts
49-
>const goodHighlighting = <T extends I>(
50-
^^^^^
51-
source.ts meta.var.expr.ts storage.type.ts
52-
^
53-
source.ts meta.var.expr.ts
54-
^^^^^^^^^^^^^^^^
55-
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.constant.ts entity.name.function.ts
56-
^
57-
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
58-
^
59-
source.ts meta.var.expr.ts keyword.operator.assignment.ts
60-
^
61-
source.ts meta.var.expr.ts meta.arrow.ts
62-
^
63-
source.ts meta.var.expr.ts meta.arrow.ts meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts
64-
^
65-
source.ts meta.var.expr.ts meta.arrow.ts meta.type.parameters.ts entity.name.type.ts
66-
^
67-
source.ts meta.var.expr.ts meta.arrow.ts meta.type.parameters.ts
68-
^^^^^^^
69-
source.ts meta.var.expr.ts meta.arrow.ts meta.type.parameters.ts storage.modifier.ts
70-
^
71-
source.ts meta.var.expr.ts meta.arrow.ts meta.type.parameters.ts
72-
^
73-
source.ts meta.var.expr.ts meta.arrow.ts meta.type.parameters.ts entity.name.type.ts
74-
^
75-
source.ts meta.var.expr.ts meta.arrow.ts meta.type.parameters.ts punctuation.definition.typeparameters.end.ts
76-
^
77-
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
78-
> arg: T
79-
^^
80-
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts
81-
^^^
82-
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts variable.parameter.ts
83-
^
84-
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.annotation.ts
85-
^
86-
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts meta.type.annotation.ts
87-
^
88-
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts meta.type.annotation.ts entity.name.type.ts
89-
>) => {
90-
^
91-
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts punctuation.definition.parameters.end.ts
92-
^
93-
source.ts meta.var.expr.ts meta.arrow.ts
94-
^^
95-
source.ts meta.var.expr.ts meta.arrow.ts storage.type.function.arrow.ts
96-
^
97-
source.ts meta.var.expr.ts meta.arrow.ts
98-
^
99-
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts punctuation.definition.block.ts
100-
> const a = arg
101-
^^
102-
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts
103-
^^^^^
104-
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.var.expr.ts storage.type.ts
105-
^
106-
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.var.expr.ts
107-
^
108-
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.constant.ts
109-
^
110-
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts
111-
^
112-
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.var.expr.ts keyword.operator.assignment.ts
113-
^
114-
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.var.expr.ts
115-
^^^
116-
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.var.expr.ts variable.other.readwrite.ts
117-
> return a
118-
^^
119-
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts
120-
^^^^^^
121-
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts keyword.control.flow.ts
122-
^
123-
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts
124-
^
125-
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts variable.other.readwrite.ts
126-
>}
127-
^
128-
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts punctuation.definition.block.ts
129-
>
130-
^
131-
source.ts
13242
>const goodHighlighting2 = <
13343
^^^^^
13444
source.ts meta.var.expr.ts storage.type.ts

0 commit comments

Comments
 (0)