Skip to content

Commit 59b62cb

Browse files
committed
handle expression after return keyword explicitly
Fixes #823
1 parent 15b157d commit 59b62cb

14 files changed

+124
-21
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,12 @@ repository:
190190
'2': { name: entity.name.label.ts }
191191
- name: keyword.control.loop.ts
192192
match: '{{startOfIdentifier}}(break|continue|do|goto|while){{endOfIdentifier}}'
193-
- name: keyword.control.flow.ts
194-
match: '{{startOfIdentifier}}(return){{endOfIdentifier}}'
193+
- begin: '{{startOfIdentifier}}(return){{endOfIdentifier}}'
194+
beginCaptures:
195+
'0': { name: keyword.control.flow.ts }
196+
end: (?=[;}]|$|{{endOfStatement}})
197+
patterns:
198+
- include: '#expression'
195199
- name: keyword.control.switch.ts
196200
match: '{{startOfIdentifier}}(case|default|switch){{endOfIdentifier}}'
197201
- include: '#if-statement'

TypeScript.tmLanguage

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -184,10 +184,25 @@
184184
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
185185
</dict>
186186
<dict>
187-
<key>name</key>
188-
<string>keyword.control.flow.ts</string>
189-
<key>match</key>
187+
<key>begin</key>
190188
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(return)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
189+
<key>beginCaptures</key>
190+
<dict>
191+
<key>0</key>
192+
<dict>
193+
<key>name</key>
194+
<string>keyword.control.flow.ts</string>
195+
</dict>
196+
</dict>
197+
<key>end</key>
198+
<string>(?=[;}]|$|;|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))</string>
199+
<key>patterns</key>
200+
<array>
201+
<dict>
202+
<key>include</key>
203+
<string>#expression</string>
204+
</dict>
205+
</array>
191206
</dict>
192207
<dict>
193208
<key>name</key>

TypeScriptReact.tmLanguage

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -184,10 +184,25 @@
184184
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
185185
</dict>
186186
<dict>
187-
<key>name</key>
188-
<string>keyword.control.flow.tsx</string>
189-
<key>match</key>
187+
<key>begin</key>
190188
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(return)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
189+
<key>beginCaptures</key>
190+
<dict>
191+
<key>0</key>
192+
<dict>
193+
<key>name</key>
194+
<string>keyword.control.flow.tsx</string>
195+
</dict>
196+
</dict>
197+
<key>end</key>
198+
<string>(?=[;}]|$|;|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))</string>
199+
<key>patterns</key>
200+
<array>
201+
<dict>
202+
<key>include</key>
203+
<string>#expression</string>
204+
</dict>
205+
</array>
191206
</dict>
192207
<dict>
193208
<key>name</key>

tests/baselines/FunctionMethodReturnTypes.baseline.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ Grammar: TypeScript.tmLanguage
123123
^^^^^^
124124
source.ts meta.function.ts meta.block.ts keyword.control.flow.ts
125125
^
126-
source.ts meta.function.ts meta.block.ts meta.objectliteral.ts
126+
source.ts meta.function.ts meta.block.ts
127127
^
128128
source.ts meta.function.ts meta.block.ts meta.objectliteral.ts punctuation.definition.block.ts
129129
^
@@ -184,7 +184,7 @@ Grammar: TypeScript.tmLanguage
184184
^^^^^^
185185
source.ts meta.function.ts meta.block.ts keyword.control.flow.ts
186186
^
187-
source.ts meta.function.ts meta.block.ts meta.objectliteral.ts
187+
source.ts meta.function.ts meta.block.ts
188188
^
189189
source.ts meta.function.ts meta.block.ts meta.objectliteral.ts punctuation.definition.block.ts
190190
^
@@ -1027,7 +1027,7 @@ Grammar: TypeScript.tmLanguage
10271027
^^^^^^
10281028
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts keyword.control.flow.ts
10291029
^
1030-
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.objectliteral.ts
1030+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
10311031
^
10321032
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.objectliteral.ts punctuation.definition.block.ts
10331033
^
@@ -1086,7 +1086,7 @@ Grammar: TypeScript.tmLanguage
10861086
^^^^^^
10871087
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts keyword.control.flow.ts
10881088
^
1089-
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.objectliteral.ts
1089+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
10901090
^
10911091
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.objectliteral.ts punctuation.definition.block.ts
10921092
^

tests/baselines/Issue382.baseline.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ Grammar: TypeScript.tmLanguage
139139
^^^^^^
140140
source.ts meta.class.ts meta.block.ts keyword.control.flow.ts
141141
^
142-
source.ts meta.class.ts meta.block.ts meta.objectliteral.ts
142+
source.ts meta.class.ts meta.block.ts
143143
^
144144
source.ts meta.class.ts meta.block.ts meta.objectliteral.ts punctuation.definition.block.ts
145145
^
@@ -202,7 +202,7 @@ Grammar: TypeScript.tmLanguage
202202
^^^^^^
203203
source.ts meta.class.ts meta.block.ts keyword.control.flow.ts
204204
^
205-
source.ts meta.class.ts meta.block.ts meta.objectliteral.ts
205+
source.ts meta.class.ts meta.block.ts
206206
^
207207
source.ts meta.class.ts meta.block.ts meta.objectliteral.ts punctuation.definition.block.ts
208208
^

tests/baselines/Issue476.baseline.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ Grammar: TypeScript.tmLanguage
8787
^^^^^^
8888
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts keyword.control.flow.ts
8989
^
90-
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.objectliteral.ts
90+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts
9191
^
9292
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts meta.objectliteral.ts punctuation.definition.block.ts
9393
> [

tests/baselines/Issue554.baseline.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ Grammar: TypeScript.tmLanguage
5151
^^^^^^
5252
source.ts meta.function.ts meta.block.ts keyword.control.flow.ts
5353
^
54-
source.ts meta.function.ts meta.block.ts meta.objectliteral.ts
54+
source.ts meta.function.ts meta.block.ts
5555
^
5656
source.ts meta.function.ts meta.block.ts meta.objectliteral.ts punctuation.definition.block.ts
5757
^

tests/baselines/Issue592.baseline.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ Grammar: TypeScript.tmLanguage
5050
^^^^^^
5151
source.ts meta.function.ts meta.block.ts keyword.control.flow.ts
5252
^
53-
source.ts meta.function.ts meta.block.ts meta.objectliteral.ts
53+
source.ts meta.function.ts meta.block.ts
5454
^
5555
source.ts meta.function.ts meta.block.ts meta.objectliteral.ts punctuation.definition.block.ts
5656
^

tests/baselines/Issue595.baseline.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ Grammar: TypeScript.tmLanguage
5858
^
5959
source.ts meta.function.ts meta.block.ts keyword.operator.ternary.ts
6060
^
61-
source.ts meta.function.ts meta.block.ts meta.objectliteral.ts
61+
source.ts meta.function.ts meta.block.ts
6262
^
6363
source.ts meta.function.ts meta.block.ts meta.objectliteral.ts punctuation.definition.block.ts
6464
^

tests/baselines/Issue823.baseline.txt

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
original file
2+
-----------------------------------
3+
function test(type, obj) {
4+
return type in obj && 'broken';
5+
}
6+
-----------------------------------
7+
8+
Grammar: TypeScript.tmLanguage
9+
-----------------------------------
10+
>function test(type, obj) {
11+
^^^^^^^^
12+
source.ts meta.function.ts storage.type.function.ts
13+
^
14+
source.ts meta.function.ts
15+
^^^^
16+
source.ts meta.function.ts meta.definition.function.ts entity.name.function.ts
17+
^
18+
source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
19+
^^^^
20+
source.ts meta.function.ts meta.parameters.ts variable.parameter.ts
21+
^
22+
source.ts meta.function.ts meta.parameters.ts punctuation.separator.parameter.ts
23+
^
24+
source.ts meta.function.ts meta.parameters.ts
25+
^^^
26+
source.ts meta.function.ts meta.parameters.ts variable.parameter.ts
27+
^
28+
source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.end.ts
29+
^
30+
source.ts meta.function.ts
31+
^
32+
source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts
33+
> return type in obj && 'broken';
34+
^^
35+
source.ts meta.function.ts meta.block.ts
36+
^^^^^^
37+
source.ts meta.function.ts meta.block.ts keyword.control.flow.ts
38+
^
39+
source.ts meta.function.ts meta.block.ts
40+
^^^^
41+
source.ts meta.function.ts meta.block.ts variable.other.readwrite.ts
42+
^
43+
source.ts meta.function.ts meta.block.ts
44+
^^
45+
source.ts meta.function.ts meta.block.ts keyword.operator.expression.in.ts
46+
^
47+
source.ts meta.function.ts meta.block.ts
48+
^^^
49+
source.ts meta.function.ts meta.block.ts variable.other.readwrite.ts
50+
^
51+
source.ts meta.function.ts meta.block.ts
52+
^^
53+
source.ts meta.function.ts meta.block.ts keyword.operator.logical.ts
54+
^
55+
source.ts meta.function.ts meta.block.ts
56+
^
57+
source.ts meta.function.ts meta.block.ts string.quoted.single.ts punctuation.definition.string.begin.ts
58+
^^^^^^
59+
source.ts meta.function.ts meta.block.ts string.quoted.single.ts
60+
^
61+
source.ts meta.function.ts meta.block.ts string.quoted.single.ts punctuation.definition.string.end.ts
62+
^
63+
source.ts meta.function.ts meta.block.ts punctuation.terminator.statement.ts
64+
>}
65+
^
66+
source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts

0 commit comments

Comments
 (0)