Skip to content

Commit 8c84410

Browse files
dannymcgeeatscott
authored andcommitted
fix(syntaxes): keyword token for track
1 parent 39057fc commit 8c84410

File tree

4 files changed

+156
-11
lines changed

4 files changed

+156
-11
lines changed

syntaxes/src/template-blocks.ts

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,46 @@ export const TemplateBlocks: GrammarDefinition = {
4545
0: {name: 'meta.brace.round.ts'},
4646
},
4747
contentName: 'control.block.expression.ng',
48-
patterns: [{include: 'expression.ng'}],
48+
patterns: [
49+
{include: '#blockExpressionOfClause'},
50+
{include: '#blockExpressionLetBinding'},
51+
{include: '#blockExpressionTrackClause'},
52+
{include: 'expression.ng'},
53+
],
4954
end: /\)/,
5055
endCaptures: {
5156
0: {name: 'meta.brace.round.ts'},
5257
},
5358
},
5459

60+
blockExpressionOfClause: {
61+
begin: /([_$[:alpha:]][_$[:alnum:]]*)\s+(of)\b/,
62+
beginCaptures: {
63+
1: {name: 'variable.other.constant.ng'},
64+
2: {name: 'keyword.operator.expression.of.ng'},
65+
},
66+
end: /(?=[$)])|(?<=;)/,
67+
patterns: [{include: 'expression.ng'}],
68+
},
69+
70+
blockExpressionLetBinding: {
71+
begin: /\blet\b/,
72+
beginCaptures: {
73+
0: {name: 'storage.type.ng'},
74+
},
75+
end: /(?=[$)])|(?<=;)/,
76+
patterns: [{include: 'expression.ng'}],
77+
},
78+
79+
blockExpressionTrackClause: {
80+
begin: /\btrack\b/,
81+
beginCaptures: {
82+
0: {name: 'keyword.control.track.ng'},
83+
},
84+
end: /(?=[$)])|(?<=;)/,
85+
patterns: [{include: 'expression.ng'}],
86+
},
87+
5588
blockBody: {
5689
begin: /\{/,
5790
beginCaptures: {

syntaxes/template-blocks.json

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,15 @@
4545
},
4646
"contentName": "control.block.expression.ng",
4747
"patterns": [
48+
{
49+
"include": "#blockExpressionOfClause"
50+
},
51+
{
52+
"include": "#blockExpressionLetBinding"
53+
},
54+
{
55+
"include": "#blockExpressionTrackClause"
56+
},
4857
{
4958
"include": "expression.ng"
5059
}
@@ -56,6 +65,51 @@
5665
}
5766
}
5867
},
68+
"blockExpressionOfClause": {
69+
"begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s+(of)\\b",
70+
"beginCaptures": {
71+
"1": {
72+
"name": "variable.other.constant.ng"
73+
},
74+
"2": {
75+
"name": "keyword.operator.expression.of.ng"
76+
}
77+
},
78+
"end": "(?=[$)])|(?<=;)",
79+
"patterns": [
80+
{
81+
"include": "expression.ng"
82+
}
83+
]
84+
},
85+
"blockExpressionLetBinding": {
86+
"begin": "\\blet\\b",
87+
"beginCaptures": {
88+
"0": {
89+
"name": "storage.type.ng"
90+
}
91+
},
92+
"end": "(?=[$)])|(?<=;)",
93+
"patterns": [
94+
{
95+
"include": "expression.ng"
96+
}
97+
]
98+
},
99+
"blockExpressionTrackClause": {
100+
"begin": "\\btrack\\b",
101+
"beginCaptures": {
102+
"0": {
103+
"name": "keyword.control.track.ng"
104+
}
105+
},
106+
"end": "(?=[$)])|(?<=;)",
107+
"patterns": [
108+
{
109+
"include": "expression.ng"
110+
}
111+
]
112+
},
59113
"blockBody": {
60114
"begin": "\\{",
61115
"beginCaptures": {

syntaxes/test/data/template-blocks.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@
5252

5353
}
5454

55+
<!-- `track` is only a keyword at the start of the clause -->
56+
@for (item of items; let track = $index; track item.track) { }
57+
@for (track of tracks; track track) { }
58+
5559
<!-- Should not highlight -->
5660

5761

syntaxes/test/data/template-blocks.html.snap

Lines changed: 64 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@
143143
# ^^^ template.blocks.ng control.block.ng keyword.control.block.kind.ng
144144
# ^ template.blocks.ng control.block.ng
145145
# ^ template.blocks.ng control.block.ng meta.brace.round.ts
146-
# ^^^ template.blocks.ng control.block.ng control.block.expression.ng storage.type.ts
146+
# ^^^ template.blocks.ng control.block.ng control.block.expression.ng storage.type.ng
147147
# ^ template.blocks.ng control.block.ng control.block.expression.ng
148148
# ^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.readwrite.ts
149149
# ^ template.blocks.ng control.block.ng control.block.expression.ng
@@ -152,7 +152,7 @@
152152
# ^^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.readwrite.ts
153153
# ^ template.blocks.ng control.block.ng control.block.expression.ng punctuation.terminator.statement.ts
154154
# ^ template.blocks.ng control.block.ng control.block.expression.ng
155-
# ^^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.readwrite.ts
155+
# ^^^^^ template.blocks.ng control.block.ng control.block.expression.ng keyword.control.track.ng
156156
# ^ template.blocks.ng control.block.ng control.block.expression.ng
157157
# ^^^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.readwrite.ts
158158
# ^ template.blocks.ng control.block.ng meta.brace.round.ts
@@ -174,13 +174,13 @@
174174
# ^ template.blocks.ng control.block.ng control.block.expression.ng punctuation.terminator.statement.ts
175175
> track $index;
176176
#^^^^ template.blocks.ng control.block.ng control.block.expression.ng
177-
# ^^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.readwrite.ts
177+
# ^^^^^ template.blocks.ng control.block.ng control.block.expression.ng keyword.control.track.ng
178178
# ^ template.blocks.ng control.block.ng control.block.expression.ng
179179
# ^^^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.readwrite.ts
180180
# ^ template.blocks.ng control.block.ng control.block.expression.ng punctuation.terminator.statement.ts
181181
> let o = $odd
182182
#^^^^ template.blocks.ng control.block.ng control.block.expression.ng
183-
# ^^^ template.blocks.ng control.block.ng control.block.expression.ng storage.type.ts
183+
# ^^^ template.blocks.ng control.block.ng control.block.expression.ng storage.type.ng
184184
# ^ template.blocks.ng control.block.ng control.block.expression.ng
185185
# ^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.readwrite.ts
186186
# ^ template.blocks.ng control.block.ng control.block.expression.ng
@@ -217,14 +217,14 @@
217217
# ^^ template.blocks.ng control.block.ng
218218
>(item of items; track $index) { }
219219
#^ template.blocks.ng control.block.ng meta.brace.round.ts
220-
# ^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.readwrite.ts
220+
# ^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.constant.ng
221221
# ^ template.blocks.ng control.block.ng control.block.expression.ng
222-
# ^^ template.blocks.ng control.block.ng control.block.expression.ng keyword.operator.expression.of.ts
222+
# ^^ template.blocks.ng control.block.ng control.block.expression.ng keyword.operator.expression.of.ng
223223
# ^ template.blocks.ng control.block.ng control.block.expression.ng
224224
# ^^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.readwrite.ts
225225
# ^ template.blocks.ng control.block.ng control.block.expression.ng punctuation.terminator.statement.ts
226226
# ^ template.blocks.ng control.block.ng control.block.expression.ng
227-
# ^^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.readwrite.ts
227+
# ^^^^^ template.blocks.ng control.block.ng control.block.expression.ng keyword.control.track.ng
228228
# ^ template.blocks.ng control.block.ng control.block.expression.ng
229229
# ^^^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.readwrite.ts
230230
# ^ template.blocks.ng control.block.ng meta.brace.round.ts
@@ -238,14 +238,14 @@
238238
# ^^^ template.blocks.ng control.block.ng keyword.control.block.kind.ng
239239
# ^ template.blocks.ng control.block.ng
240240
# ^ template.blocks.ng control.block.ng meta.brace.round.ts
241-
# ^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.readwrite.ts
241+
# ^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.constant.ng
242242
# ^ template.blocks.ng control.block.ng control.block.expression.ng
243-
# ^^ template.blocks.ng control.block.ng control.block.expression.ng keyword.operator.expression.of.ts
243+
# ^^ template.blocks.ng control.block.ng control.block.expression.ng keyword.operator.expression.of.ng
244244
# ^ template.blocks.ng control.block.ng control.block.expression.ng
245245
# ^^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.readwrite.ts
246246
# ^ template.blocks.ng control.block.ng control.block.expression.ng punctuation.terminator.statement.ts
247247
# ^ template.blocks.ng control.block.ng control.block.expression.ng
248-
# ^^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.readwrite.ts
248+
# ^^^^^ template.blocks.ng control.block.ng control.block.expression.ng keyword.control.track.ng
249249
# ^ template.blocks.ng control.block.ng control.block.expression.ng
250250
# ^^^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.readwrite.ts
251251
# ^ template.blocks.ng control.block.ng meta.brace.round.ts
@@ -266,6 +266,60 @@
266266
>}
267267
#^ template.blocks.ng control.block.ng punctuation.definition.block.ts
268268
>
269+
><!-- `track` is only a keyword at the start of the clause -->
270+
#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ template.blocks.ng
271+
>@for (item of items; let track = $index; track item.track) { }
272+
#^ template.blocks.ng control.block.ng keyword.control.block.transition.ng
273+
# ^^^ template.blocks.ng control.block.ng keyword.control.block.kind.ng
274+
# ^ template.blocks.ng control.block.ng
275+
# ^ template.blocks.ng control.block.ng meta.brace.round.ts
276+
# ^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.constant.ng
277+
# ^ template.blocks.ng control.block.ng control.block.expression.ng
278+
# ^^ template.blocks.ng control.block.ng control.block.expression.ng keyword.operator.expression.of.ng
279+
# ^ template.blocks.ng control.block.ng control.block.expression.ng
280+
# ^^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.readwrite.ts
281+
# ^ template.blocks.ng control.block.ng control.block.expression.ng punctuation.terminator.statement.ts
282+
# ^ template.blocks.ng control.block.ng control.block.expression.ng
283+
# ^^^ template.blocks.ng control.block.ng control.block.expression.ng storage.type.ng
284+
# ^ template.blocks.ng control.block.ng control.block.expression.ng
285+
# ^^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.readwrite.ts
286+
# ^ template.blocks.ng control.block.ng control.block.expression.ng
287+
# ^ template.blocks.ng control.block.ng control.block.expression.ng keyword.operator.assignment.ts
288+
# ^ template.blocks.ng control.block.ng control.block.expression.ng
289+
# ^^^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.readwrite.ts
290+
# ^ template.blocks.ng control.block.ng control.block.expression.ng punctuation.terminator.statement.ts
291+
# ^ template.blocks.ng control.block.ng control.block.expression.ng
292+
# ^^^^^ template.blocks.ng control.block.ng control.block.expression.ng keyword.control.track.ng
293+
# ^ template.blocks.ng control.block.ng control.block.expression.ng
294+
# ^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.object.ts
295+
# ^ template.blocks.ng control.block.ng control.block.expression.ng punctuation.accessor.ts
296+
# ^^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.property.ts
297+
# ^ template.blocks.ng control.block.ng meta.brace.round.ts
298+
# ^ template.blocks.ng control.block.ng
299+
# ^ template.blocks.ng control.block.ng punctuation.definition.block.ts
300+
# ^ template.blocks.ng control.block.ng control.block.body.ng
301+
# ^ template.blocks.ng control.block.ng punctuation.definition.block.ts
302+
>@for (track of tracks; track track) { }
303+
#^ template.blocks.ng control.block.ng keyword.control.block.transition.ng
304+
# ^^^ template.blocks.ng control.block.ng keyword.control.block.kind.ng
305+
# ^ template.blocks.ng control.block.ng
306+
# ^ template.blocks.ng control.block.ng meta.brace.round.ts
307+
# ^^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.constant.ng
308+
# ^ template.blocks.ng control.block.ng control.block.expression.ng
309+
# ^^ template.blocks.ng control.block.ng control.block.expression.ng keyword.operator.expression.of.ng
310+
# ^ template.blocks.ng control.block.ng control.block.expression.ng
311+
# ^^^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.readwrite.ts
312+
# ^ template.blocks.ng control.block.ng control.block.expression.ng punctuation.terminator.statement.ts
313+
# ^ template.blocks.ng control.block.ng control.block.expression.ng
314+
# ^^^^^ template.blocks.ng control.block.ng control.block.expression.ng keyword.control.track.ng
315+
# ^ template.blocks.ng control.block.ng control.block.expression.ng
316+
# ^^^^^ template.blocks.ng control.block.ng control.block.expression.ng variable.other.readwrite.ts
317+
# ^ template.blocks.ng control.block.ng meta.brace.round.ts
318+
# ^ template.blocks.ng control.block.ng
319+
# ^ template.blocks.ng control.block.ng punctuation.definition.block.ts
320+
# ^ template.blocks.ng control.block.ng control.block.body.ng
321+
# ^ template.blocks.ng control.block.ng punctuation.definition.block.ts
322+
>
269323
><!-- Should not highlight -->
270324
#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ template.blocks.ng
271325
>

0 commit comments

Comments
 (0)