diff --git a/vscode-ng-language-service/syntaxes/expression.json b/vscode-ng-language-service/syntaxes/expression.json index 043de5ac2fa..a2411b8a9f1 100644 --- a/vscode-ng-language-service/syntaxes/expression.json +++ b/vscode-ng-language-service/syntaxes/expression.json @@ -160,6 +160,10 @@ "name": "keyword.operator.bitwise.shift.ts", "match": "<<|>>>|>>" }, + { + "name": "keyword.operator.spread.ts", + "match": "\\.\\.\\." + }, { "name": "keyword.operator.comparison.ts", "match": "===|!==|==|!=" diff --git a/vscode-ng-language-service/syntaxes/src/expression.ts b/vscode-ng-language-service/syntaxes/src/expression.ts index 9f59c58f6fd..f95d199d407 100644 --- a/vscode-ng-language-service/syntaxes/src/expression.ts +++ b/vscode-ng-language-service/syntaxes/src/expression.ts @@ -169,6 +169,10 @@ export const Expression: GrammarDefinition = { name: 'keyword.operator.bitwise.shift.ts', match: /<<|>>>|>>/, }, + { + name: 'keyword.operator.spread.ts', + match: /\.\.\./, + }, { name: 'keyword.operator.comparison.ts', match: /===|!==|==|!=/, diff --git a/vscode-ng-language-service/syntaxes/test/data/expression.html b/vscode-ng-language-service/syntaxes/test/data/expression.html index 4f262fc4506..7cc3b4f1839 100644 --- a/vscode-ng-language-service/syntaxes/test/data/expression.html +++ b/vscode-ng-language-service/syntaxes/test/data/expression.html @@ -98,3 +98,9 @@ as i }} {{ (let param of params?.get('value')!.property | async).anotherProperty | translate: ['language1', 'language2']; let i = index; }} + +{{ [1, ...foo, 2, ...bar, 3] }} +{{ {{a: 1, ...foo, b: 2, ...bar, c: 3}} }} + + +{{ someFn(1, ...foo, 2, ...bar, 3, ...baz) }} diff --git a/vscode-ng-language-service/syntaxes/test/data/expression.html.snap b/vscode-ng-language-service/syntaxes/test/data/expression.html.snap index 24d25e46748..aad5365df6e 100644 --- a/vscode-ng-language-service/syntaxes/test/data/expression.html.snap +++ b/vscode-ng-language-service/syntaxes/test/data/expression.html.snap @@ -1203,4 +1203,84 @@ # ^ template.ng expression.ng # ^^ template.ng punctuation.definition.block.ts > +> +#^^^^^^^^^^^^^^^^ template.ng +>{{ [1, ...foo, 2, ...bar, 3] }} +#^^ template.ng punctuation.definition.block.ts +# ^ template.ng expression.ng +# ^ template.ng expression.ng meta.array.literal.ts meta.brace.square.ts +# ^ template.ng expression.ng meta.array.literal.ts constant.numeric.decimal.ts +# ^ template.ng expression.ng meta.array.literal.ts punctuation.separator.comma.ts +# ^ template.ng expression.ng meta.array.literal.ts +# ^^^ template.ng expression.ng meta.array.literal.ts keyword.operator.spread.ts +# ^^^ template.ng expression.ng meta.array.literal.ts variable.other.readwrite.ts +# ^ template.ng expression.ng meta.array.literal.ts punctuation.separator.comma.ts +# ^ template.ng expression.ng meta.array.literal.ts +# ^ template.ng expression.ng meta.array.literal.ts constant.numeric.decimal.ts +# ^ template.ng expression.ng meta.array.literal.ts punctuation.separator.comma.ts +# ^ template.ng expression.ng meta.array.literal.ts +# ^^^ template.ng expression.ng meta.array.literal.ts keyword.operator.spread.ts +# ^^^ template.ng expression.ng meta.array.literal.ts variable.other.readwrite.ts +# ^ template.ng expression.ng meta.array.literal.ts punctuation.separator.comma.ts +# ^ template.ng expression.ng meta.array.literal.ts +# ^ template.ng expression.ng meta.array.literal.ts constant.numeric.decimal.ts +# ^ template.ng expression.ng meta.array.literal.ts meta.brace.square.ts +# ^ template.ng expression.ng +# ^^ template.ng punctuation.definition.block.ts +>{{ {{a: 1, ...foo, b: 2, ...bar, c: 3}} }} +#^^ template.ng punctuation.definition.block.ts +# ^^^ template.ng expression.ng +# ^ template.ng expression.ng variable.other.readwrite.ts +# ^^ template.ng expression.ng +# ^ template.ng expression.ng constant.numeric.decimal.ts +# ^ template.ng expression.ng punctuation.separator.comma.ts +# ^ template.ng expression.ng +# ^^^ template.ng expression.ng keyword.operator.spread.ts +# ^^^ template.ng expression.ng variable.other.readwrite.ts +# ^ template.ng expression.ng punctuation.separator.comma.ts +# ^ template.ng expression.ng +# ^ template.ng expression.ng variable.other.readwrite.ts +# ^^ template.ng expression.ng +# ^ template.ng expression.ng constant.numeric.decimal.ts +# ^ template.ng expression.ng punctuation.separator.comma.ts +# ^ template.ng expression.ng +# ^^^ template.ng expression.ng keyword.operator.spread.ts +# ^^^ template.ng expression.ng variable.other.readwrite.ts +# ^ template.ng expression.ng punctuation.separator.comma.ts +# ^ template.ng expression.ng +# ^ template.ng expression.ng variable.other.readwrite.ts +# ^^ template.ng expression.ng +# ^ template.ng expression.ng constant.numeric.decimal.ts +# ^^ template.ng punctuation.definition.block.ts +# ^^^^ template.ng +> +> +#^^^^^^^^^^^^^^ template.ng +>{{ someFn(1, ...foo, 2, ...bar, 3, ...baz) }} +#^^ template.ng punctuation.definition.block.ts +# ^ template.ng expression.ng +# ^^^^^^ template.ng expression.ng entity.name.function.ts +# ^ template.ng expression.ng meta.brace.round.ts +# ^ template.ng expression.ng constant.numeric.decimal.ts +# ^ template.ng expression.ng punctuation.separator.comma.ts +# ^ template.ng expression.ng +# ^^^ template.ng expression.ng keyword.operator.spread.ts +# ^^^ template.ng expression.ng variable.other.readwrite.ts +# ^ template.ng expression.ng punctuation.separator.comma.ts +# ^ template.ng expression.ng +# ^ template.ng expression.ng constant.numeric.decimal.ts +# ^ template.ng expression.ng punctuation.separator.comma.ts +# ^ template.ng expression.ng +# ^^^ template.ng expression.ng keyword.operator.spread.ts +# ^^^ template.ng expression.ng variable.other.readwrite.ts +# ^ template.ng expression.ng punctuation.separator.comma.ts +# ^ template.ng expression.ng +# ^ template.ng expression.ng constant.numeric.decimal.ts +# ^ template.ng expression.ng punctuation.separator.comma.ts +# ^ template.ng expression.ng +# ^^^ template.ng expression.ng keyword.operator.spread.ts +# ^^^ template.ng expression.ng variable.other.readwrite.ts +# ^ template.ng expression.ng meta.brace.round.ts +# ^ template.ng expression.ng +# ^^ template.ng punctuation.definition.block.ts > \ No newline at end of file