Skip to content

Commit c5e57fa

Browse files
committed
End arrow return type matching after we encounter arrow
Fixes #388
1 parent 0af62ab commit c5e57fa

File tree

5 files changed

+127
-3
lines changed

5 files changed

+127
-3
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1628,7 +1628,7 @@ repository:
16281628
begin: '(?<=\))\s*(:)'
16291629
beginCaptures:
16301630
'1': { name: keyword.operator.type.annotation.ts }
1631-
end: (?<!:)((?=$)|(?==>|;|//))
1631+
end: (?==>)
16321632
patterns:
16331633
# TODO: handle the fn and constructor type specifically.
16341634
- include: '#type-predicate-operator'

TypeScript.tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4439,7 +4439,7 @@
44394439
</dict>
44404440
</dict>
44414441
<key>end</key>
4442-
<string>(?&lt;!:)((?=$)|(?==&gt;|;|//))</string>
4442+
<string>(?==&gt;)</string>
44434443
<key>patterns</key>
44444444
<array>
44454445
<dict>

TypeScriptReact.tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4421,7 +4421,7 @@
44214421
</dict>
44224422
</dict>
44234423
<key>end</key>
4424-
<string>(?&lt;!:)((?=$)|(?==&gt;|;|//))</string>
4424+
<string>(?==&gt;)</string>
44254425
<key>patterns</key>
44264426
<array>
44274427
<dict>

tests/baselines/Issue388.baseline.txt

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
original file
2+
-----------------------------------
3+
export const fun = (param: ParamType): FunResult => { }
4+
5+
export const fun =
6+
(param: ParamType):
7+
FunResult => {
8+
}
9+
-----------------------------------
10+
11+
Grammar: TypeScript.tmLanguage
12+
-----------------------------------
13+
>export const fun = (param: ParamType): FunResult => { }
14+
^^^^^^
15+
source.ts meta.var.expr.ts keyword.control.export.ts
16+
^
17+
source.ts meta.var.expr.ts
18+
^^^^^
19+
source.ts meta.var.expr.ts storage.type.ts
20+
^
21+
source.ts meta.var.expr.ts
22+
^^^
23+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts entity.name.function.ts
24+
^
25+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
26+
^
27+
source.ts meta.var.expr.ts keyword.operator.assignment.ts
28+
^
29+
source.ts meta.var.expr.ts meta.arrow.ts
30+
^
31+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
32+
^^^^^
33+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts variable.parameter.ts
34+
^
35+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.annotation.ts
36+
^
37+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts meta.type.annotation.ts
38+
^^^^^^^^^
39+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts meta.type.annotation.ts entity.name.type.ts
40+
^
41+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts punctuation.definition.parameters.end.ts
42+
^
43+
source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts keyword.operator.type.annotation.ts
44+
^
45+
source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts
46+
^^^^^^^^^
47+
source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts entity.name.type.ts
48+
^
49+
source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts
50+
^^
51+
source.ts meta.var.expr.ts meta.arrow.ts storage.type.function.arrow.ts
52+
^
53+
source.ts meta.var.expr.ts meta.arrow.ts
54+
^
55+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts punctuation.definition.block.ts
56+
^
57+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts
58+
^
59+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts punctuation.definition.block.ts
60+
^
61+
source.ts meta.var.expr.ts
62+
>
63+
^^
64+
source.ts
65+
>export const fun =
66+
^^^^^^
67+
source.ts meta.var.expr.ts keyword.control.export.ts
68+
^
69+
source.ts meta.var.expr.ts
70+
^^^^^
71+
source.ts meta.var.expr.ts storage.type.ts
72+
^
73+
source.ts meta.var.expr.ts
74+
^^^
75+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.readwrite.ts
76+
^
77+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
78+
^
79+
source.ts meta.var.expr.ts keyword.operator.assignment.ts
80+
^^^
81+
source.ts meta.var.expr.ts
82+
> (param: ParamType):
83+
^^
84+
source.ts meta.var.expr.ts meta.arrow.ts
85+
^
86+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
87+
^^^^^
88+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts variable.parameter.ts
89+
^
90+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.annotation.ts
91+
^
92+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts meta.type.annotation.ts
93+
^^^^^^^^^
94+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts meta.type.annotation.ts entity.name.type.ts
95+
^
96+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts punctuation.definition.parameters.end.ts
97+
^
98+
source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts keyword.operator.type.annotation.ts
99+
^^^
100+
source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts
101+
> FunResult => {
102+
^^^^
103+
source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts
104+
^^^^^^^^^
105+
source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts entity.name.type.ts
106+
^
107+
source.ts meta.var.expr.ts meta.arrow.ts meta.return.type.arrow.ts
108+
^^
109+
source.ts meta.var.expr.ts meta.arrow.ts storage.type.function.arrow.ts
110+
^
111+
source.ts meta.var.expr.ts meta.arrow.ts
112+
^
113+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts punctuation.definition.block.ts
114+
^^
115+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts
116+
>}
117+
^
118+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts punctuation.definition.block.ts

tests/cases/Issue388.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export const fun = (param: ParamType): FunResult => { }
2+
3+
export const fun =
4+
(param: ParamType):
5+
FunResult => {
6+
}

0 commit comments

Comments
 (0)