Skip to content

Commit 30d95eb

Browse files
committed
Fix the detection of variable declaration over multiple lines when separated by ,
Fixes #491
1 parent 5cbc04b commit 30d95eb

7 files changed

+492
-303
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,15 @@ repository:
4141
- include: '#var-single-variable'
4242
- include: '#variable-initializer'
4343
- include: '#comment'
44+
- begin: (,)\s*(?!\S)
45+
beginCaptures:
46+
'1': { name: punctuation.separator.comma.ts }
47+
end: (?<!,)((?==|;|}|(\s+(of|in)\s+)|^\s*$))|((?<=\S)(?=\s*$))
48+
patterns:
49+
- include: '#comment'
50+
- include: '#destructuring-variable'
51+
- include: '#var-single-variable'
52+
- include: '#punctuation-comma'
4453
- include: '#punctuation-comma'
4554

4655
var-single-variable:

TypeScript.tmLanguage

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,39 @@
128128
<key>include</key>
129129
<string>#comment</string>
130130
</dict>
131+
<dict>
132+
<key>begin</key>
133+
<string>(,)\s*(?!\S)</string>
134+
<key>beginCaptures</key>
135+
<dict>
136+
<key>1</key>
137+
<dict>
138+
<key>name</key>
139+
<string>punctuation.separator.comma.ts</string>
140+
</dict>
141+
</dict>
142+
<key>end</key>
143+
<string>(?&lt;!,)((?==|;|}|(\s+(of|in)\s+)|^\s*$))|((?&lt;=\S)(?=\s*$))</string>
144+
<key>patterns</key>
145+
<array>
146+
<dict>
147+
<key>include</key>
148+
<string>#comment</string>
149+
</dict>
150+
<dict>
151+
<key>include</key>
152+
<string>#destructuring-variable</string>
153+
</dict>
154+
<dict>
155+
<key>include</key>
156+
<string>#var-single-variable</string>
157+
</dict>
158+
<dict>
159+
<key>include</key>
160+
<string>#punctuation-comma</string>
161+
</dict>
162+
</array>
163+
</dict>
131164
<dict>
132165
<key>include</key>
133166
<string>#punctuation-comma</string>

TypeScriptReact.tmLanguage

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,39 @@
128128
<key>include</key>
129129
<string>#comment</string>
130130
</dict>
131+
<dict>
132+
<key>begin</key>
133+
<string>(,)\s*(?!\S)</string>
134+
<key>beginCaptures</key>
135+
<dict>
136+
<key>1</key>
137+
<dict>
138+
<key>name</key>
139+
<string>punctuation.separator.comma.tsx</string>
140+
</dict>
141+
</dict>
142+
<key>end</key>
143+
<string>(?&lt;!,)((?==|;|}|(\s+(of|in)\s+)|^\s*$))|((?&lt;=\S)(?=\s*$))</string>
144+
<key>patterns</key>
145+
<array>
146+
<dict>
147+
<key>include</key>
148+
<string>#comment</string>
149+
</dict>
150+
<dict>
151+
<key>include</key>
152+
<string>#destructuring-variable</string>
153+
</dict>
154+
<dict>
155+
<key>include</key>
156+
<string>#var-single-variable</string>
157+
</dict>
158+
<dict>
159+
<key>include</key>
160+
<string>#punctuation-comma</string>
161+
</dict>
162+
</array>
163+
</dict>
131164
<dict>
132165
<key>include</key>
133166
<string>#punctuation-comma</string>

tests/baselines/Issue403IncorrectlyDetectedArrowTypeParameters.baseline.txt

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

tests/baselines/Issue403IncorrectlyDetectedFunctionCallAsArrow.baseline.txt

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -133,41 +133,41 @@ Grammar: TypeScript.tmLanguage
133133
source.ts meta.function.ts meta.block.ts meta.var.expr.ts constant.language.null.ts
134134
^
135135
source.ts meta.function.ts meta.block.ts meta.var.expr.ts punctuation.separator.comma.ts
136-
^
136+
^^
137137
source.ts meta.function.ts meta.block.ts meta.var.expr.ts
138138
> i = p.trim(t + "");
139139
^^^^^^^^^^^^
140-
source.ts meta.function.ts meta.block.ts
140+
source.ts meta.function.ts meta.block.ts meta.var.expr.ts
141141
^
142-
source.ts meta.function.ts meta.block.ts variable.other.readwrite.ts
142+
source.ts meta.function.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.readwrite.ts
143143
^
144-
source.ts meta.function.ts meta.block.ts
144+
source.ts meta.function.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts
145145
^
146-
source.ts meta.function.ts meta.block.ts keyword.operator.assignment.ts
146+
source.ts meta.function.ts meta.block.ts meta.var.expr.ts keyword.operator.assignment.ts
147147
^
148-
source.ts meta.function.ts meta.block.ts
148+
source.ts meta.function.ts meta.block.ts meta.var.expr.ts
149149
^
150-
source.ts meta.function.ts meta.block.ts meta.function-call.ts variable.other.object.ts
150+
source.ts meta.function.ts meta.block.ts meta.var.expr.ts meta.function-call.ts variable.other.object.ts
151151
^
152-
source.ts meta.function.ts meta.block.ts meta.function-call.ts punctuation.accessor.ts
152+
source.ts meta.function.ts meta.block.ts meta.var.expr.ts meta.function-call.ts punctuation.accessor.ts
153153
^^^^
154-
source.ts meta.function.ts meta.block.ts meta.function-call.ts entity.name.function.ts
154+
source.ts meta.function.ts meta.block.ts meta.var.expr.ts meta.function-call.ts entity.name.function.ts
155155
^
156-
source.ts meta.function.ts meta.block.ts meta.brace.round.ts
156+
source.ts meta.function.ts meta.block.ts meta.var.expr.ts meta.brace.round.ts
157157
^
158-
source.ts meta.function.ts meta.block.ts variable.other.readwrite.ts
158+
source.ts meta.function.ts meta.block.ts meta.var.expr.ts variable.other.readwrite.ts
159159
^
160-
source.ts meta.function.ts meta.block.ts
160+
source.ts meta.function.ts meta.block.ts meta.var.expr.ts
161161
^
162-
source.ts meta.function.ts meta.block.ts keyword.operator.arithmetic.ts
162+
source.ts meta.function.ts meta.block.ts meta.var.expr.ts keyword.operator.arithmetic.ts
163163
^
164-
source.ts meta.function.ts meta.block.ts
164+
source.ts meta.function.ts meta.block.ts meta.var.expr.ts
165165
^
166-
source.ts meta.function.ts meta.block.ts string.quoted.double.ts punctuation.definition.string.begin.ts
166+
source.ts meta.function.ts meta.block.ts meta.var.expr.ts string.quoted.double.ts punctuation.definition.string.begin.ts
167167
^
168-
source.ts meta.function.ts meta.block.ts string.quoted.double.ts punctuation.definition.string.end.ts
168+
source.ts meta.function.ts meta.block.ts meta.var.expr.ts string.quoted.double.ts punctuation.definition.string.end.ts
169169
^
170-
source.ts meta.function.ts meta.block.ts meta.brace.round.ts
170+
source.ts meta.function.ts meta.block.ts meta.var.expr.ts meta.brace.round.ts
171171
^
172172
source.ts meta.function.ts meta.block.ts punctuation.terminator.statement.ts
173173
^^

tests/baselines/Issue491.baseline.txt

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
original file
2+
-----------------------------------
3+
let a: number = w,
4+
b: string = x, // string is not colored
5+
c: any = y, // any is not colored
6+
d: boolean = z; // boolean is not colored
7+
-----------------------------------
8+
9+
Grammar: TypeScript.tmLanguage
10+
-----------------------------------
11+
>let a: number = w,
12+
^^^
13+
source.ts meta.var.expr.ts storage.type.ts
14+
^
15+
source.ts meta.var.expr.ts
16+
^
17+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.readwrite.ts
18+
^
19+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.type.annotation.ts keyword.operator.type.annotation.ts
20+
^
21+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.type.annotation.ts
22+
^^^^^^
23+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.type.annotation.ts support.type.primitive.ts
24+
^
25+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.type.annotation.ts
26+
^
27+
source.ts meta.var.expr.ts keyword.operator.assignment.ts
28+
^
29+
source.ts meta.var.expr.ts
30+
^
31+
source.ts meta.var.expr.ts variable.other.readwrite.ts
32+
^
33+
source.ts meta.var.expr.ts punctuation.separator.comma.ts
34+
^^
35+
source.ts meta.var.expr.ts
36+
>b: string = x, // string is not colored
37+
^
38+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.readwrite.ts
39+
^
40+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.type.annotation.ts keyword.operator.type.annotation.ts
41+
^
42+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.type.annotation.ts
43+
^^^^^^
44+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.type.annotation.ts support.type.primitive.ts
45+
^
46+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.type.annotation.ts
47+
^
48+
source.ts meta.var.expr.ts keyword.operator.assignment.ts
49+
^
50+
source.ts meta.var.expr.ts
51+
^
52+
source.ts meta.var.expr.ts variable.other.readwrite.ts
53+
^
54+
source.ts meta.var.expr.ts punctuation.separator.comma.ts
55+
^
56+
source.ts meta.var.expr.ts
57+
^^
58+
source.ts meta.var.expr.ts comment.line.double-slash.ts punctuation.definition.comment.ts
59+
^^^^^^^^^^^^^^^^^^^^^^^^
60+
source.ts meta.var.expr.ts comment.line.double-slash.ts
61+
>c: any = y, // any is not colored
62+
^
63+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.readwrite.ts
64+
^
65+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.type.annotation.ts keyword.operator.type.annotation.ts
66+
^
67+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.type.annotation.ts
68+
^^^
69+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.type.annotation.ts support.type.primitive.ts
70+
^
71+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.type.annotation.ts
72+
^
73+
source.ts meta.var.expr.ts keyword.operator.assignment.ts
74+
^
75+
source.ts meta.var.expr.ts
76+
^
77+
source.ts meta.var.expr.ts variable.other.readwrite.ts
78+
^
79+
source.ts meta.var.expr.ts punctuation.separator.comma.ts
80+
^
81+
source.ts meta.var.expr.ts
82+
^^
83+
source.ts meta.var.expr.ts comment.line.double-slash.ts punctuation.definition.comment.ts
84+
^^^^^^^^^^^^^^^^^^^^^
85+
source.ts meta.var.expr.ts comment.line.double-slash.ts
86+
>d: boolean = z; // boolean is not colored
87+
^
88+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.readwrite.ts
89+
^
90+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.type.annotation.ts keyword.operator.type.annotation.ts
91+
^
92+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.type.annotation.ts
93+
^^^^^^^
94+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.type.annotation.ts support.type.primitive.ts
95+
^
96+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.type.annotation.ts
97+
^
98+
source.ts meta.var.expr.ts keyword.operator.assignment.ts
99+
^
100+
source.ts meta.var.expr.ts
101+
^
102+
source.ts meta.var.expr.ts variable.other.readwrite.ts
103+
^
104+
source.ts punctuation.terminator.statement.ts
105+
^
106+
source.ts
107+
^^
108+
source.ts comment.line.double-slash.ts punctuation.definition.comment.ts
109+
^^^^^^^^^^^^^^^^^^^^^^^^
110+
source.ts comment.line.double-slash.ts

tests/cases/Issue491.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
let a: number = w,
2+
b: string = x, // string is not colored
3+
c: any = y, // any is not colored
4+
d: boolean = z; // boolean is not colored

0 commit comments

Comments
 (0)