Skip to content

Commit c70a6a6

Browse files
crisbetothePunderWoman
authored andcommitted
fix(vscode-extension): add syntax highlighting for spread/rest expressions
Updates the syntax definition to include spread/rest expressions.
1 parent e45f8af commit c70a6a6

4 files changed

Lines changed: 94 additions & 0 deletions

File tree

vscode-ng-language-service/syntaxes/expression.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,10 @@
160160
"name": "keyword.operator.bitwise.shift.ts",
161161
"match": "<<|>>>|>>"
162162
},
163+
{
164+
"name": "keyword.operator.spread.ts",
165+
"match": "\\.\\.\\."
166+
},
163167
{
164168
"name": "keyword.operator.comparison.ts",
165169
"match": "===|!==|==|!="

vscode-ng-language-service/syntaxes/src/expression.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,10 @@ export const Expression: GrammarDefinition = {
169169
name: 'keyword.operator.bitwise.shift.ts',
170170
match: /<<|>>>|>>/,
171171
},
172+
{
173+
name: 'keyword.operator.spread.ts',
174+
match: /\.\.\./,
175+
},
172176
{
173177
name: 'keyword.operator.comparison.ts',
174178
match: /===|!==|==|!=/,

vscode-ng-language-service/syntaxes/test/data/expression.html

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,3 +98,9 @@
9898
{{ (let param of params?.get('value')!.property | async).anotherProperty | translate: ['language1', 'language2']; let i
9999
= index; }}
100100

101+
<!-- Spread -->
102+
{{ [1, ...foo, 2, ...bar, 3] }}
103+
{{ {{a: 1, ...foo, b: 2, ...bar, c: 3}} }}
104+
105+
<!-- Rest -->
106+
{{ someFn(1, ...foo, 2, ...bar, 3, ...baz) }}

vscode-ng-language-service/syntaxes/test/data/expression.html.snap

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1203,4 +1203,84 @@
12031203
# ^ template.ng expression.ng
12041204
# ^^ template.ng punctuation.definition.block.ts
12051205
>
1206+
><!-- Spread -->
1207+
#^^^^^^^^^^^^^^^^ template.ng
1208+
>{{ [1, ...foo, 2, ...bar, 3] }}
1209+
#^^ template.ng punctuation.definition.block.ts
1210+
# ^ template.ng expression.ng
1211+
# ^ template.ng expression.ng meta.array.literal.ts meta.brace.square.ts
1212+
# ^ template.ng expression.ng meta.array.literal.ts constant.numeric.decimal.ts
1213+
# ^ template.ng expression.ng meta.array.literal.ts punctuation.separator.comma.ts
1214+
# ^ template.ng expression.ng meta.array.literal.ts
1215+
# ^^^ template.ng expression.ng meta.array.literal.ts keyword.operator.spread.ts
1216+
# ^^^ template.ng expression.ng meta.array.literal.ts variable.other.readwrite.ts
1217+
# ^ template.ng expression.ng meta.array.literal.ts punctuation.separator.comma.ts
1218+
# ^ template.ng expression.ng meta.array.literal.ts
1219+
# ^ template.ng expression.ng meta.array.literal.ts constant.numeric.decimal.ts
1220+
# ^ template.ng expression.ng meta.array.literal.ts punctuation.separator.comma.ts
1221+
# ^ template.ng expression.ng meta.array.literal.ts
1222+
# ^^^ template.ng expression.ng meta.array.literal.ts keyword.operator.spread.ts
1223+
# ^^^ template.ng expression.ng meta.array.literal.ts variable.other.readwrite.ts
1224+
# ^ template.ng expression.ng meta.array.literal.ts punctuation.separator.comma.ts
1225+
# ^ template.ng expression.ng meta.array.literal.ts
1226+
# ^ template.ng expression.ng meta.array.literal.ts constant.numeric.decimal.ts
1227+
# ^ template.ng expression.ng meta.array.literal.ts meta.brace.square.ts
1228+
# ^ template.ng expression.ng
1229+
# ^^ template.ng punctuation.definition.block.ts
1230+
>{{ {{a: 1, ...foo, b: 2, ...bar, c: 3}} }}
1231+
#^^ template.ng punctuation.definition.block.ts
1232+
# ^^^ template.ng expression.ng
1233+
# ^ template.ng expression.ng variable.other.readwrite.ts
1234+
# ^^ template.ng expression.ng
1235+
# ^ template.ng expression.ng constant.numeric.decimal.ts
1236+
# ^ template.ng expression.ng punctuation.separator.comma.ts
1237+
# ^ template.ng expression.ng
1238+
# ^^^ template.ng expression.ng keyword.operator.spread.ts
1239+
# ^^^ template.ng expression.ng variable.other.readwrite.ts
1240+
# ^ template.ng expression.ng punctuation.separator.comma.ts
1241+
# ^ template.ng expression.ng
1242+
# ^ template.ng expression.ng variable.other.readwrite.ts
1243+
# ^^ template.ng expression.ng
1244+
# ^ template.ng expression.ng constant.numeric.decimal.ts
1245+
# ^ template.ng expression.ng punctuation.separator.comma.ts
1246+
# ^ template.ng expression.ng
1247+
# ^^^ template.ng expression.ng keyword.operator.spread.ts
1248+
# ^^^ template.ng expression.ng variable.other.readwrite.ts
1249+
# ^ template.ng expression.ng punctuation.separator.comma.ts
1250+
# ^ template.ng expression.ng
1251+
# ^ template.ng expression.ng variable.other.readwrite.ts
1252+
# ^^ template.ng expression.ng
1253+
# ^ template.ng expression.ng constant.numeric.decimal.ts
1254+
# ^^ template.ng punctuation.definition.block.ts
1255+
# ^^^^ template.ng
1256+
>
1257+
><!-- Rest -->
1258+
#^^^^^^^^^^^^^^ template.ng
1259+
>{{ someFn(1, ...foo, 2, ...bar, 3, ...baz) }}
1260+
#^^ template.ng punctuation.definition.block.ts
1261+
# ^ template.ng expression.ng
1262+
# ^^^^^^ template.ng expression.ng entity.name.function.ts
1263+
# ^ template.ng expression.ng meta.brace.round.ts
1264+
# ^ template.ng expression.ng constant.numeric.decimal.ts
1265+
# ^ template.ng expression.ng punctuation.separator.comma.ts
1266+
# ^ template.ng expression.ng
1267+
# ^^^ template.ng expression.ng keyword.operator.spread.ts
1268+
# ^^^ template.ng expression.ng variable.other.readwrite.ts
1269+
# ^ template.ng expression.ng punctuation.separator.comma.ts
1270+
# ^ template.ng expression.ng
1271+
# ^ template.ng expression.ng constant.numeric.decimal.ts
1272+
# ^ template.ng expression.ng punctuation.separator.comma.ts
1273+
# ^ template.ng expression.ng
1274+
# ^^^ template.ng expression.ng keyword.operator.spread.ts
1275+
# ^^^ template.ng expression.ng variable.other.readwrite.ts
1276+
# ^ template.ng expression.ng punctuation.separator.comma.ts
1277+
# ^ template.ng expression.ng
1278+
# ^ template.ng expression.ng constant.numeric.decimal.ts
1279+
# ^ template.ng expression.ng punctuation.separator.comma.ts
1280+
# ^ template.ng expression.ng
1281+
# ^^^ template.ng expression.ng keyword.operator.spread.ts
1282+
# ^^^ template.ng expression.ng variable.other.readwrite.ts
1283+
# ^ template.ng expression.ng meta.brace.round.ts
1284+
# ^ template.ng expression.ng
1285+
# ^^ template.ng punctuation.definition.block.ts
12061286
>

0 commit comments

Comments
 (0)