Skip to content

Commit a42e5cb

Browse files
committed
Fix multiline type annotation in parameters
Fixes #715
1 parent 4cf7872 commit a42e5cb

9 files changed

+262
-9
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -859,7 +859,7 @@ repository:
859859
- include: '#decorator'
860860
- include: '#destructuring-parameter'
861861
- include: '#parameter-name'
862-
- include: '#type-annotation'
862+
- include: '#parameter-type-annotation'
863863
- include: '#variable-initializer'
864864
- name: punctuation.separator.parameter.ts
865865
match: ','
@@ -2074,6 +2074,16 @@ repository:
20742074
patterns:
20752075
- include: '#type'
20762076

2077+
parameter-type-annotation:
2078+
patterns:
2079+
- name: meta.type.annotation.ts
2080+
begin: (:)
2081+
beginCaptures:
2082+
'1': { name: keyword.operator.type.annotation.ts }
2083+
end: (?=[,)])|(?==[^>])
2084+
patterns:
2085+
- include: '#type'
2086+
20772087
#return type
20782088
return-type:
20792089
patterns:

TypeScript.tmLanguage

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2766,7 +2766,7 @@
27662766
</dict>
27672767
<dict>
27682768
<key>include</key>
2769-
<string>#type-annotation</string>
2769+
<string>#parameter-type-annotation</string>
27702770
</dict>
27712771
<dict>
27722772
<key>include</key>
@@ -6330,6 +6330,35 @@
63306330
</dict>
63316331
</array>
63326332
</dict>
6333+
<key>parameter-type-annotation</key>
6334+
<dict>
6335+
<key>patterns</key>
6336+
<array>
6337+
<dict>
6338+
<key>name</key>
6339+
<string>meta.type.annotation.ts</string>
6340+
<key>begin</key>
6341+
<string>(:)</string>
6342+
<key>beginCaptures</key>
6343+
<dict>
6344+
<key>1</key>
6345+
<dict>
6346+
<key>name</key>
6347+
<string>keyword.operator.type.annotation.ts</string>
6348+
</dict>
6349+
</dict>
6350+
<key>end</key>
6351+
<string>(?=[,)])|(?==[^&gt;])</string>
6352+
<key>patterns</key>
6353+
<array>
6354+
<dict>
6355+
<key>include</key>
6356+
<string>#type</string>
6357+
</dict>
6358+
</array>
6359+
</dict>
6360+
</array>
6361+
</dict>
63336362
<key>return-type</key>
63346363
<dict>
63356364
<key>patterns</key>

TypeScriptReact.tmLanguage

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2770,7 +2770,7 @@
27702770
</dict>
27712771
<dict>
27722772
<key>include</key>
2773-
<string>#type-annotation</string>
2773+
<string>#parameter-type-annotation</string>
27742774
</dict>
27752775
<dict>
27762776
<key>include</key>
@@ -6252,6 +6252,35 @@
62526252
</dict>
62536253
</array>
62546254
</dict>
6255+
<key>parameter-type-annotation</key>
6256+
<dict>
6257+
<key>patterns</key>
6258+
<array>
6259+
<dict>
6260+
<key>name</key>
6261+
<string>meta.type.annotation.tsx</string>
6262+
<key>begin</key>
6263+
<string>(:)</string>
6264+
<key>beginCaptures</key>
6265+
<dict>
6266+
<key>1</key>
6267+
<dict>
6268+
<key>name</key>
6269+
<string>keyword.operator.type.annotation.tsx</string>
6270+
</dict>
6271+
</dict>
6272+
<key>end</key>
6273+
<string>(?=[,)])|(?==[^&gt;])</string>
6274+
<key>patterns</key>
6275+
<array>
6276+
<dict>
6277+
<key>include</key>
6278+
<string>#type</string>
6279+
</dict>
6280+
</array>
6281+
</dict>
6282+
</array>
6283+
</dict>
62556284
<key>return-type</key>
62566285
<dict>
62576286
<key>patterns</key>

tests/baselines/Issue148.baseline.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ Grammar: TypeScript.tmLanguage
132132
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts support.type.primitive.ts
133133
> ) { }
134134
^^^^
135-
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts
135+
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts
136136
^
137137
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts punctuation.definition.parameters.end.ts
138138
^

tests/baselines/Issue629.baseline.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ Grammar: TypeScript.tmLanguage
211211
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.function.return.ts support.type.primitive.ts
212212
> ): void {
213213
^^
214-
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts
214+
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts
215215
^
216216
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts punctuation.definition.parameters.end.ts
217217
^

tests/baselines/Issue715.baseline.txt

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
original file
2+
-----------------------------------
3+
interface TestCafeFactory {
4+
Selector(
5+
init:
6+
| string
7+
| ((...args: any[]) => Node | Node[] | NodeList | HTMLCollection)
8+
| Selector
9+
| NodeSnapshot
10+
| SelectorPromise,
11+
options?: SelectorOptions
12+
): Selector;
13+
}
14+
-----------------------------------
15+
16+
Grammar: TypeScript.tmLanguage
17+
-----------------------------------
18+
>interface TestCafeFactory {
19+
^^^^^^^^^
20+
source.ts meta.interface.ts storage.type.interface.ts
21+
^
22+
source.ts meta.interface.ts
23+
^^^^^^^^^^^^^^^
24+
source.ts meta.interface.ts entity.name.type.interface.ts
25+
^
26+
source.ts meta.interface.ts
27+
^
28+
source.ts meta.interface.ts punctuation.definition.block.ts
29+
> Selector(
30+
^^
31+
source.ts meta.interface.ts meta.method.declaration.ts
32+
^^^^^^^^
33+
source.ts meta.interface.ts meta.method.declaration.ts meta.definition.method.ts entity.name.function.ts
34+
^
35+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
36+
> init:
37+
^^^^
38+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts
39+
^^^^
40+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts variable.parameter.ts
41+
^
42+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.annotation.ts
43+
> | string
44+
^^^^^^^^^^
45+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts
46+
^
47+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.ts
48+
^
49+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts
50+
^^^^^^
51+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts support.type.primitive.ts
52+
> | ((...args: any[]) => Node | Node[] | NodeList | HTMLCollection)
53+
^^^^^^
54+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts
55+
^
56+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.ts
57+
^
58+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts
59+
^
60+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.brace.round.ts
61+
^
62+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
63+
^^^
64+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.ts meta.parameters.ts keyword.operator.rest.ts
65+
^^^^
66+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.ts meta.parameters.ts variable.parameter.ts
67+
^
68+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.annotation.ts
69+
^
70+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.ts meta.parameters.ts meta.type.annotation.ts
71+
^^^
72+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.ts meta.parameters.ts meta.type.annotation.ts support.type.primitive.ts
73+
^
74+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts meta.brace.square.ts
75+
^
76+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.tuple.ts meta.brace.square.ts
77+
^
78+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.ts meta.parameters.ts punctuation.definition.parameters.end.ts
79+
^
80+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts
81+
^^
82+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.return.ts storage.type.function.arrow.ts
83+
^
84+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.return.ts
85+
^^^^
86+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.return.ts entity.name.type.ts
87+
^
88+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.return.ts
89+
^
90+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.return.ts keyword.operator.type.ts
91+
^
92+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.return.ts
93+
^^^^
94+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.return.ts entity.name.type.ts
95+
^
96+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.return.ts meta.type.tuple.ts meta.brace.square.ts
97+
^
98+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.return.ts meta.type.tuple.ts meta.brace.square.ts
99+
^
100+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.return.ts
101+
^
102+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.return.ts keyword.operator.type.ts
103+
^
104+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.return.ts
105+
^^^^^^^^
106+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.return.ts entity.name.type.ts
107+
^
108+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.return.ts
109+
^
110+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.return.ts keyword.operator.type.ts
111+
^
112+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.return.ts
113+
^^^^^^^^^^^^^^
114+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.type.function.return.ts entity.name.type.ts
115+
^
116+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.paren.cover.ts meta.brace.round.ts
117+
> | Selector
118+
^^^^^^
119+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts
120+
^
121+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.ts
122+
^
123+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts
124+
^^^^^^^^
125+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts entity.name.type.ts
126+
> | NodeSnapshot
127+
^^^^^^
128+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts
129+
^
130+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.ts
131+
^
132+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts
133+
^^^^^^^^^^^^
134+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts entity.name.type.ts
135+
> | SelectorPromise,
136+
^^^^^^
137+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts
138+
^
139+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.ts
140+
^
141+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts
142+
^^^^^^^^^^^^^^^
143+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts entity.name.type.ts
144+
^
145+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts punctuation.separator.parameter.ts
146+
> options?: SelectorOptions
147+
^^^^
148+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts
149+
^^^^^^^
150+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts variable.parameter.ts
151+
^
152+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts keyword.operator.optional.ts
153+
^
154+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.annotation.ts
155+
^
156+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts
157+
^^^^^^^^^^^^^^^
158+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts entity.name.type.ts
159+
> ): Selector;
160+
^^
161+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts
162+
^
163+
source.ts meta.interface.ts meta.method.declaration.ts meta.parameters.ts punctuation.definition.parameters.end.ts
164+
^
165+
source.ts meta.interface.ts meta.method.declaration.ts meta.return.type.ts keyword.operator.type.annotation.ts
166+
^
167+
source.ts meta.interface.ts meta.method.declaration.ts meta.return.type.ts
168+
^^^^^^^^
169+
source.ts meta.interface.ts meta.method.declaration.ts meta.return.type.ts entity.name.type.ts
170+
^
171+
source.ts meta.interface.ts punctuation.terminator.statement.ts
172+
>}
173+
^
174+
source.ts meta.interface.ts punctuation.definition.block.ts

tests/baselines/Issue82.baseline.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,12 @@ Grammar: TypeScript.tmLanguage
7373
^
7474
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.function.return.ts
7575
^^
76-
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts comment.line.double-slash.ts punctuation.definition.comment.ts
76+
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts comment.line.double-slash.ts punctuation.definition.comment.ts
7777
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
78-
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts comment.line.double-slash.ts
78+
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts comment.line.double-slash.ts
7979
> ) {
8080
^^^^
81-
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts
81+
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts
8282
^
8383
source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts punctuation.definition.parameters.end.ts
8484
^

tests/baselines/Issue82.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Grammar: TypeScript.tmLanguage
2727
^
2828
[4, 31]: source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.function.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
2929
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
30-
[4, 44]: source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts comment.line.double-slash.ts
30+
[4, 44]: source.ts meta.class.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts comment.line.double-slash.ts
3131
> ) {
3232
>
3333
^^^^^^^^^

tests/cases/Issue715.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
interface TestCafeFactory {
2+
Selector(
3+
init:
4+
| string
5+
| ((...args: any[]) => Node | Node[] | NodeList | HTMLCollection)
6+
| Selector
7+
| NodeSnapshot
8+
| SelectorPromise,
9+
options?: SelectorOptions
10+
): Selector;
11+
}

0 commit comments

Comments
 (0)