Skip to content

Commit 3376784

Browse files
authored
Merge pull request #296 from Microsoft/switchCaseBlock
Handle the { after case clause
2 parents 3fa03f9 + 2daf70a commit 3376784

9 files changed

+161
-47
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -599,7 +599,7 @@ repository:
599599

600600
after-operator-block:
601601
name: meta.object-literal.ts
602-
begin: (?<=[=(:,\[?+!]|await|return|yield|throw|in|of|typeof|&&|\|\||\*)\s*(\{)
602+
begin: (?<=[=(,\[?+!]|await|return|yield|throw|in|of|typeof|&&|\|\||\*)\s*(\{)
603603
beginCaptures:
604604
'1': { name: punctuation.definition.block.ts }
605605
end: \}
@@ -929,6 +929,8 @@ repository:
929929
beginCaptures:
930930
'1': { name: keyword.control.switch.ts }
931931
end: ':'
932+
endCaptures:
933+
'0': { name: punctuation.definition.section.case-statement.ts }
932934
patterns:
933935
- include: '#expression'
934936

TypeScript.tmLanguage

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1959,7 +1959,7 @@
19591959
<key>name</key>
19601960
<string>meta.object-literal.ts</string>
19611961
<key>begin</key>
1962-
<string>(?&lt;=[=(:,\[?+!]|await|return|yield|throw|in|of|typeof|&amp;&amp;|\|\||\*)\s*(\{)</string>
1962+
<string>(?&lt;=[=(,\[?+!]|await|return|yield|throw|in|of|typeof|&amp;&amp;|\|\||\*)\s*(\{)</string>
19631963
<key>beginCaptures</key>
19641964
<dict>
19651965
<key>1</key>
@@ -2900,6 +2900,14 @@
29002900
</dict>
29012901
<key>end</key>
29022902
<string>:</string>
2903+
<key>endCaptures</key>
2904+
<dict>
2905+
<key>0</key>
2906+
<dict>
2907+
<key>name</key>
2908+
<string>punctuation.definition.section.case-statement.ts</string>
2909+
</dict>
2910+
</dict>
29032911
<key>patterns</key>
29042912
<array>
29052913
<dict>

TypeScriptReact.tmLanguage

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1963,7 +1963,7 @@
19631963
<key>name</key>
19641964
<string>meta.object-literal.tsx</string>
19651965
<key>begin</key>
1966-
<string>(?&lt;=[=(:,\[?+!]|await|return|yield|throw|in|of|typeof|&amp;&amp;|\|\||\*)\s*(\{)</string>
1966+
<string>(?&lt;=[=(,\[?+!]|await|return|yield|throw|in|of|typeof|&amp;&amp;|\|\||\*)\s*(\{)</string>
19671967
<key>beginCaptures</key>
19681968
<dict>
19691969
<key>1</key>
@@ -2904,6 +2904,14 @@
29042904
</dict>
29052905
<key>end</key>
29062906
<string>:</string>
2907+
<key>endCaptures</key>
2908+
<dict>
2909+
<key>0</key>
2910+
<dict>
2911+
<key>name</key>
2912+
<string>punctuation.definition.section.case-statement.tsx</string>
2913+
</dict>
2914+
</dict>
29072915
<key>patterns</key>
29082916
<array>
29092917
<dict>

tests/baselines/Issue243.baseline.txt

Lines changed: 33 additions & 33 deletions
Large diffs are not rendered by default.

tests/baselines/Issue294.baseline.txt

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
original file
2+
-----------------------------------
3+
switch (0) {
4+
case 0: {
5+
const zero = 0;
6+
return zero;
7+
}
8+
}
9+
-----------------------------------
10+
11+
Grammar: TypeScript.tmLanguage
12+
-----------------------------------
13+
>switch (0) {
14+
^^^^^^
15+
source.ts switch-statement.expr.ts switch-expression.expr.ts keyword.control.switch.ts
16+
^
17+
source.ts switch-statement.expr.ts switch-expression.expr.ts
18+
^
19+
source.ts switch-statement.expr.ts switch-expression.expr.ts meta.brace.round.ts
20+
^
21+
source.ts switch-statement.expr.ts switch-expression.expr.ts constant.numeric.decimal.ts
22+
^
23+
source.ts switch-statement.expr.ts switch-expression.expr.ts meta.brace.round.ts
24+
^
25+
source.ts switch-statement.expr.ts
26+
^
27+
source.ts switch-statement.expr.ts switch-block.expr.ts punctuation.definition.block.ts
28+
^^
29+
source.ts switch-statement.expr.ts switch-block.expr.ts
30+
> case 0: {
31+
^^^^
32+
source.ts switch-statement.expr.ts switch-block.expr.ts
33+
^^^^
34+
source.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts keyword.control.switch.ts
35+
^
36+
source.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts
37+
^
38+
source.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts constant.numeric.decimal.ts
39+
^
40+
source.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts punctuation.definition.section.case-statement.ts
41+
^
42+
source.ts switch-statement.expr.ts switch-block.expr.ts
43+
^
44+
source.ts switch-statement.expr.ts switch-block.expr.ts meta.block.ts punctuation.definition.block.ts
45+
^^
46+
source.ts switch-statement.expr.ts switch-block.expr.ts meta.block.ts
47+
> const zero = 0;
48+
^^^^^^^^
49+
source.ts switch-statement.expr.ts switch-block.expr.ts meta.block.ts
50+
^^^^^
51+
source.ts switch-statement.expr.ts switch-block.expr.ts meta.block.ts meta.var.expr.ts storage.type.ts
52+
^
53+
source.ts switch-statement.expr.ts switch-block.expr.ts meta.block.ts meta.var.expr.ts
54+
^^^^
55+
source.ts switch-statement.expr.ts switch-block.expr.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts variable.other.readwrite.ts
56+
^
57+
source.ts switch-statement.expr.ts switch-block.expr.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts
58+
^
59+
source.ts switch-statement.expr.ts switch-block.expr.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts keyword.operator.assignment.ts
60+
^
61+
source.ts switch-statement.expr.ts switch-block.expr.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts
62+
^
63+
source.ts switch-statement.expr.ts switch-block.expr.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts constant.numeric.decimal.ts
64+
^
65+
source.ts switch-statement.expr.ts switch-block.expr.ts meta.block.ts punctuation.terminator.statement.ts
66+
^^
67+
source.ts switch-statement.expr.ts switch-block.expr.ts meta.block.ts
68+
> return zero;
69+
^^^^^^^^
70+
source.ts switch-statement.expr.ts switch-block.expr.ts meta.block.ts
71+
^^^^^^
72+
source.ts switch-statement.expr.ts switch-block.expr.ts meta.block.ts keyword.control.flow.ts
73+
^
74+
source.ts switch-statement.expr.ts switch-block.expr.ts meta.block.ts
75+
^^^^
76+
source.ts switch-statement.expr.ts switch-block.expr.ts meta.block.ts variable.other.readwrite.ts
77+
^
78+
source.ts switch-statement.expr.ts switch-block.expr.ts meta.block.ts punctuation.terminator.statement.ts
79+
^^
80+
source.ts switch-statement.expr.ts switch-block.expr.ts meta.block.ts
81+
> }
82+
^^^^
83+
source.ts switch-statement.expr.ts switch-block.expr.ts meta.block.ts
84+
^
85+
source.ts switch-statement.expr.ts switch-block.expr.ts meta.block.ts punctuation.definition.block.ts
86+
^^
87+
source.ts switch-statement.expr.ts switch-block.expr.ts
88+
>}
89+
^
90+
source.ts switch-statement.expr.ts punctuation.definition.block.ts

tests/baselines/Issue335.baseline.txt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ Grammar: TypeScript.tmLanguage
322322
^
323323
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts constant.numeric.decimal.ts
324324
^
325-
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts
325+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts punctuation.definition.section.case-statement.ts
326326
> case 2:
327327
^^^
328328
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts
@@ -333,14 +333,14 @@ Grammar: TypeScript.tmLanguage
333333
^
334334
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts constant.numeric.decimal.ts
335335
^
336-
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts
336+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts punctuation.definition.section.case-statement.ts
337337
> default:
338338
^^^
339339
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts
340340
^^^^^^^
341341
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts keyword.control.switch.ts
342342
^
343-
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts
343+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts punctuation.definition.section.case-statement.ts
344344
> break;
345345
^^^^
346346
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts
@@ -474,7 +474,7 @@ Grammar: TypeScript.tmLanguage
474474
^
475475
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts constant.numeric.decimal.ts
476476
^
477-
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts
477+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts punctuation.definition.section.case-statement.ts
478478
> case 2:
479479
^^^
480480
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts
@@ -485,14 +485,14 @@ Grammar: TypeScript.tmLanguage
485485
^
486486
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts constant.numeric.decimal.ts
487487
^
488-
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts
488+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts punctuation.definition.section.case-statement.ts
489489
> default:
490490
^^^
491491
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts
492492
^^^^^^^
493493
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts keyword.control.switch.ts
494494
^
495-
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts
495+
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts punctuation.definition.section.case-statement.ts
496496
> break;
497497
^^^^
498498
source.ts meta.class.ts meta.method.declaration.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts

tests/baselines/Issue37.baseline.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@ Grammar: TypeScript.tmLanguage
325325
^
326326
source.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts constant.numeric.decimal.ts
327327
^
328-
source.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts
328+
source.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts punctuation.definition.section.case-statement.ts
329329
^
330330
source.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts
331331
^^^^^
@@ -342,7 +342,7 @@ Grammar: TypeScript.tmLanguage
342342
^
343343
source.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts constant.numeric.decimal.ts
344344
^
345-
source.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts
345+
source.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts punctuation.definition.section.case-statement.ts
346346
^
347347
source.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts
348348
^^^^^
@@ -355,7 +355,7 @@ Grammar: TypeScript.tmLanguage
355355
^^^^^^^
356356
source.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts keyword.control.switch.ts
357357
^
358-
source.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts
358+
source.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts punctuation.definition.section.case-statement.ts
359359
^
360360
source.ts meta.block.ts switch-statement.expr.ts switch-block.expr.ts
361361
^^^^^

tests/baselines/javascript.baseline.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ Grammar: TypeScript.tmLanguage
3939
^
4040
source.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts constant.numeric.decimal.ts
4141
^
42-
source.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts
42+
source.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts punctuation.definition.section.case-statement.ts
4343
^^
4444
source.ts switch-statement.expr.ts switch-block.expr.ts
4545
> default:
@@ -48,7 +48,7 @@ Grammar: TypeScript.tmLanguage
4848
^^^^^^^
4949
source.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts keyword.control.switch.ts
5050
^
51-
source.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts
51+
source.ts switch-statement.expr.ts switch-block.expr.ts case-clause.expr.ts punctuation.definition.section.case-statement.ts
5252
^^
5353
source.ts switch-statement.expr.ts switch-block.expr.ts
5454
>}

tests/cases/Issue294.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
switch (0) {
2+
case 0: {
3+
const zero = 0;
4+
return zero;
5+
}
6+
}

0 commit comments

Comments
 (0)