Skip to content

Commit 21d57cb

Browse files
committed
Variable scope can end with block end
Fixes #252
1 parent 0425a20 commit 21d57cb

File tree

6 files changed

+137
-32
lines changed

6 files changed

+137
-32
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ repository:
3232
beginCaptures:
3333
'1': { name: keyword.control.export.ts }
3434
'2': { name: storage.type.ts }
35-
end: (?=$|;)
35+
end: (?=$|;|})
3636
patterns:
3737
- include: '#destructuring-variable'
3838
- include: '#var-single-variable'
@@ -43,11 +43,11 @@ repository:
4343
begin: \b([_$[:alpha:]][_$[:alnum:]]*)\b
4444
beginCaptures:
4545
'1': { name: variable.other.readwrite.ts }
46-
end: (?=$|[;,])
46+
end: (?=$|[;,}])
4747
patterns:
4848
- include: '#variable-initializer'
4949
- begin: \G
50-
end: (?!\G)(?=$|[;,=])
50+
end: (?!\G)(?=$|[;,=}])
5151
patterns:
5252
- include: '#type-annotation'
5353
- include: '#string'
@@ -59,11 +59,11 @@ repository:
5959
begin: (?<!=|:)\s*(\{)
6060
beginCaptures:
6161
'1': { name: punctuation.definition.binding-pattern.object.ts }
62-
end: (?=$|[;,])
62+
end: (?=$|[;,}])
6363
patterns:
6464
- include: '#variable-initializer'
6565
- begin: \G
66-
end: (?!\G)(?=$|[;,=])
66+
end: (?!\G)(?=$|[;,=}])
6767
patterns:
6868
- begin: \G
6969
end: \}
@@ -77,11 +77,11 @@ repository:
7777
begin: (?<!=|:)\s*(\[)
7878
beginCaptures:
7979
'1': { name: punctuation.definition.binding-pattern.array.ts }
80-
end: (?=$|[;,])
80+
end: (?=$|[;,}])
8181
patterns:
8282
- include: '#variable-initializer'
8383
- begin: \G
84-
end: (?!\G)(?=$|[;,=])
84+
end: (?!\G)(?=$|[;,=}])
8585
patterns:
8686
- begin: \G
8787
end: \]
@@ -819,7 +819,7 @@ repository:
819819
begin: (?<!=|!)(=)(?!=)
820820
beginCaptures:
821821
'1': { name: keyword.operator.assignment.ts }
822-
end: (?=$|[,);])
822+
end: (?=$|[,);}])
823823
patterns:
824824
- include: '#expression'
825825

TypeScript.tmLanguage

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -864,7 +864,7 @@
864864
</dict>
865865
</dict>
866866
<key>end</key>
867-
<string>(?=$|[;,])</string>
867+
<string>(?=$|[;,}])</string>
868868
<key>name</key>
869869
<string>meta.object-binding-pattern-variable.ts</string>
870870
<key>patterns</key>
@@ -877,7 +877,7 @@
877877
<key>begin</key>
878878
<string>\G</string>
879879
<key>end</key>
880-
<string>(?!\G)(?=$|[;,=])</string>
880+
<string>(?!\G)(?=$|[;,=}])</string>
881881
<key>patterns</key>
882882
<array>
883883
<dict>
@@ -925,7 +925,7 @@
925925
</dict>
926926
</dict>
927927
<key>end</key>
928-
<string>(?=$|[;,])</string>
928+
<string>(?=$|[;,}])</string>
929929
<key>name</key>
930930
<string>meta.array-binding-pattern-variable.ts</string>
931931
<key>patterns</key>
@@ -938,7 +938,7 @@
938938
<key>begin</key>
939939
<string>\G</string>
940940
<key>end</key>
941-
<string>(?!\G)(?=$|[;,=])</string>
941+
<string>(?!\G)(?=$|[;,=}])</string>
942942
<key>patterns</key>
943943
<array>
944944
<dict>
@@ -3815,7 +3815,7 @@
38153815
</dict>
38163816
</dict>
38173817
<key>end</key>
3818-
<string>(?=$|;)</string>
3818+
<string>(?=$|;|})</string>
38193819
<key>name</key>
38203820
<string>meta.var.expr.ts</string>
38213821
<key>patterns</key>
@@ -3847,7 +3847,7 @@
38473847
</dict>
38483848
</dict>
38493849
<key>end</key>
3850-
<string>(?=$|[;,])</string>
3850+
<string>(?=$|[;,}])</string>
38513851
<key>name</key>
38523852
<string>meta.var-single-variable.expr.ts</string>
38533853
<key>patterns</key>
@@ -3860,7 +3860,7 @@
38603860
<key>begin</key>
38613861
<string>\G</string>
38623862
<key>end</key>
3863-
<string>(?!\G)(?=$|[;,=])</string>
3863+
<string>(?!\G)(?=$|[;,=}])</string>
38643864
<key>patterns</key>
38653865
<array>
38663866
<dict>
@@ -3892,7 +3892,7 @@
38923892
</dict>
38933893
</dict>
38943894
<key>end</key>
3895-
<string>(?=$|[,);])</string>
3895+
<string>(?=$|[,);}])</string>
38963896
<key>patterns</key>
38973897
<array>
38983898
<dict>

TypeScriptReact.YAML-tmLanguage

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ repository:
3636
beginCaptures:
3737
'1': { name: keyword.control.export.tsx }
3838
'2': { name: storage.type.tsx }
39-
end: (?=$|;)
39+
end: (?=$|;|})
4040
patterns:
4141
- include: '#destructuring-variable'
4242
- include: '#var-single-variable'
@@ -47,11 +47,11 @@ repository:
4747
begin: \b([_$[:alpha:]][_$[:alnum:]]*)\b
4848
beginCaptures:
4949
'1': { name: variable.other.readwrite.tsx }
50-
end: (?=$|[;,])
50+
end: (?=$|[;,}])
5151
patterns:
5252
- include: '#variable-initializer'
5353
- begin: \G
54-
end: (?!\G)(?=$|[;,=])
54+
end: (?!\G)(?=$|[;,=}])
5555
patterns:
5656
- include: '#type-annotation'
5757
- include: '#string'
@@ -63,11 +63,11 @@ repository:
6363
begin: (?<!=|:)\s*(\{)
6464
beginCaptures:
6565
'1': { name: punctuation.definition.binding-pattern.object.tsx }
66-
end: (?=$|[;,])
66+
end: (?=$|[;,}])
6767
patterns:
6868
- include: '#variable-initializer'
6969
- begin: \G
70-
end: (?!\G)(?=$|[;,=])
70+
end: (?!\G)(?=$|[;,=}])
7171
patterns:
7272
- begin: \G
7373
end: \}
@@ -81,11 +81,11 @@ repository:
8181
begin: (?<!=|:)\s*(\[)
8282
beginCaptures:
8383
'1': { name: punctuation.definition.binding-pattern.array.tsx }
84-
end: (?=$|[;,])
84+
end: (?=$|[;,}])
8585
patterns:
8686
- include: '#variable-initializer'
8787
- begin: \G
88-
end: (?!\G)(?=$|[;,=])
88+
end: (?!\G)(?=$|[;,=}])
8989
patterns:
9090
- begin: \G
9191
end: \]
@@ -823,7 +823,7 @@ repository:
823823
begin: (?<!=|!)(=)(?!=)
824824
beginCaptures:
825825
'1': { name: keyword.operator.assignment.tsx }
826-
end: (?=$|[,);])
826+
end: (?=$|[,);}])
827827
patterns:
828828
- include: '#expression'
829829

TypeScriptReact.tmLanguage

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -832,7 +832,7 @@
832832
</dict>
833833
</dict>
834834
<key>end</key>
835-
<string>(?=$|[;,])</string>
835+
<string>(?=$|[;,}])</string>
836836
<key>name</key>
837837
<string>meta.object-binding-pattern-variable.tsx</string>
838838
<key>patterns</key>
@@ -845,7 +845,7 @@
845845
<key>begin</key>
846846
<string>\G</string>
847847
<key>end</key>
848-
<string>(?!\G)(?=$|[;,=])</string>
848+
<string>(?!\G)(?=$|[;,=}])</string>
849849
<key>patterns</key>
850850
<array>
851851
<dict>
@@ -893,7 +893,7 @@
893893
</dict>
894894
</dict>
895895
<key>end</key>
896-
<string>(?=$|[;,])</string>
896+
<string>(?=$|[;,}])</string>
897897
<key>name</key>
898898
<string>meta.array-binding-pattern-variable.tsx</string>
899899
<key>patterns</key>
@@ -906,7 +906,7 @@
906906
<key>begin</key>
907907
<string>\G</string>
908908
<key>end</key>
909-
<string>(?!\G)(?=$|[;,=])</string>
909+
<string>(?!\G)(?=$|[;,=}])</string>
910910
<key>patterns</key>
911911
<array>
912912
<dict>
@@ -4205,7 +4205,7 @@
42054205
</dict>
42064206
</dict>
42074207
<key>end</key>
4208-
<string>(?=$|;)</string>
4208+
<string>(?=$|;|})</string>
42094209
<key>name</key>
42104210
<string>meta.var.expr.tsx</string>
42114211
<key>patterns</key>
@@ -4237,7 +4237,7 @@
42374237
</dict>
42384238
</dict>
42394239
<key>end</key>
4240-
<string>(?=$|[;,])</string>
4240+
<string>(?=$|[;,}])</string>
42414241
<key>name</key>
42424242
<string>meta.var-single-variable.expr.tsx</string>
42434243
<key>patterns</key>
@@ -4250,7 +4250,7 @@
42504250
<key>begin</key>
42514251
<string>\G</string>
42524252
<key>end</key>
4253-
<string>(?!\G)(?=$|[;,=])</string>
4253+
<string>(?!\G)(?=$|[;,=}])</string>
42544254
<key>patterns</key>
42554255
<array>
42564256
<dict>
@@ -4282,7 +4282,7 @@
42824282
</dict>
42834283
</dict>
42844284
<key>end</key>
4285-
<string>(?=$|[,);])</string>
4285+
<string>(?=$|[,);}])</string>
42864286
<key>patterns</key>
42874287
<array>
42884288
<dict>

tests/baselines/Issue252.baseline.txt

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
original file
2+
-----------------------------------
3+
function getPage(p, base) {
4+
if (filename == base + "index") { var route = "/" + base }
5+
}
6+
7+
-----------------------------------
8+
9+
>function getPage(p, base) {
10+
^^^^^^^^
11+
source.ts meta.function.ts storage.type.function.ts
12+
^
13+
source.ts meta.function.ts
14+
^^^^^^^
15+
source.ts meta.function.ts entity.name.function.ts
16+
^
17+
source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
18+
^
19+
source.ts meta.function.ts meta.parameters.ts variable.parameter.ts
20+
^
21+
source.ts meta.function.ts meta.parameters.ts
22+
^
23+
source.ts meta.function.ts meta.parameters.ts
24+
^^^^
25+
source.ts meta.function.ts meta.parameters.ts variable.parameter.ts
26+
^
27+
source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.end.ts
28+
^
29+
source.ts meta.function.ts
30+
^
31+
source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts
32+
^^
33+
source.ts meta.function.ts meta.block.ts
34+
> if (filename == base + "index") { var route = "/" + base }
35+
^^^^
36+
source.ts meta.function.ts meta.block.ts
37+
^^
38+
source.ts meta.function.ts meta.block.ts keyword.control.conditional.ts
39+
^
40+
source.ts meta.function.ts meta.block.ts
41+
^
42+
source.ts meta.function.ts meta.block.ts meta.brace.round.ts
43+
^^^^^^^^^
44+
source.ts meta.function.ts meta.block.ts
45+
^^
46+
source.ts meta.function.ts meta.block.ts keyword.operator.comparison.ts
47+
^^^^^^
48+
source.ts meta.function.ts meta.block.ts
49+
^
50+
source.ts meta.function.ts meta.block.ts keyword.operator.arithmetic.ts
51+
^
52+
source.ts meta.function.ts meta.block.ts
53+
^
54+
source.ts meta.function.ts meta.block.ts string.quoted.double.ts punctuation.definition.string.begin.ts
55+
^^^^^
56+
source.ts meta.function.ts meta.block.ts string.quoted.double.ts
57+
^
58+
source.ts meta.function.ts meta.block.ts string.quoted.double.ts punctuation.definition.string.end.ts
59+
^
60+
source.ts meta.function.ts meta.block.ts meta.brace.round.ts
61+
^
62+
source.ts meta.function.ts meta.block.ts
63+
^
64+
source.ts meta.function.ts meta.block.ts meta.block.ts punctuation.definition.block.ts
65+
^
66+
source.ts meta.function.ts meta.block.ts meta.block.ts
67+
^^^
68+
source.ts meta.function.ts meta.block.ts meta.block.ts meta.var.expr.ts storage.type.ts
69+
^
70+
source.ts meta.function.ts meta.block.ts meta.block.ts meta.var.expr.ts
71+
^^^^^
72+
source.ts meta.function.ts meta.block.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts variable.other.readwrite.ts
73+
^
74+
source.ts meta.function.ts meta.block.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts
75+
^
76+
source.ts meta.function.ts meta.block.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts keyword.operator.assignment.ts
77+
^
78+
source.ts meta.function.ts meta.block.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts
79+
^
80+
source.ts meta.function.ts meta.block.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.quoted.double.ts punctuation.definition.string.begin.ts
81+
^
82+
source.ts meta.function.ts meta.block.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.quoted.double.ts
83+
^
84+
source.ts meta.function.ts meta.block.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts string.quoted.double.ts punctuation.definition.string.end.ts
85+
^
86+
source.ts meta.function.ts meta.block.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts
87+
^
88+
source.ts meta.function.ts meta.block.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts keyword.operator.arithmetic.ts
89+
^^^^^^
90+
source.ts meta.function.ts meta.block.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts
91+
^
92+
source.ts meta.function.ts meta.block.ts meta.block.ts punctuation.definition.block.ts
93+
^^
94+
source.ts meta.function.ts meta.block.ts
95+
>}
96+
^
97+
source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts
98+
^^
99+
source.ts
100+
>
101+
^
102+
source.ts

tests/cases/Issue252.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
function getPage(p, base) {
2+
if (filename == base + "index") { var route = "/" + base }
3+
}

0 commit comments

Comments
 (0)