fix(vscode-extension): Highlight function calls with optional chaining

eg: `foo?.()` should be highlighted as `foo()`.

fixes #65513

(cherry picked from commit 4f8d3995f0)
This commit is contained in:
Matthieu Riegler
2026-02-10 15:29:56 +01:00
committed by Andrew Kushnir
parent 2c3f3cc336
commit 083f0fa263
4 changed files with 29 additions and 7 deletions
@@ -213,8 +213,8 @@
]
},
"functionCall": {
"begin": "(?=(\\??\\.\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\()",
"end": "(?<=\\))(?!(\\??\\.\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\()",
"begin": "(?=(\\??\\.\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(<([^<>]|\\<[^<>]+\\>)+>\\s*)?(\\?\\.\\s*)?\\()",
"end": "(?<=\\))(?!(\\??\\.\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(<([^<>]|\\<[^<>]+\\>)+>\\s*)?(\\?\\.\\s*)?\\()",
"patterns": [
{
"name": "punctuation.accessor.ts",
@@ -223,8 +223,9 @@ export const Expression: GrammarDefinition = {
},
functionCall: {
begin: /(?=(\??\.\s*)?([_$[:alpha:]][_$[:alnum:]]*)\s*(<([^<>]|\<[^<>]+\>)+>\s*)?\()/,
end: /(?<=\))(?!(\??\.\s*)?([_$[:alpha:]][_$[:alnum:]]*)\s*(<([^<>]|\<[^<>]+\>)+>\s*)?\()/,
begin:
/(?=(\??\.\s*)?([_$[:alpha:]][_$[:alnum:]]*)\s*(<([^<>]|\<[^<>]+\>)+>\s*)?(\?\.\s*)?\()/,
end: /(?<=\))(?!(\??\.\s*)?([_$[:alpha:]][_$[:alnum:]]*)\s*(<([^<>]|\<[^<>]+\>)+>\s*)?(\?\.\s*)?\()/,
patterns: [
{
name: 'punctuation.accessor.ts',
@@ -37,6 +37,7 @@
{{ call()?.conditional; }}
{{ call()!.conditional }}
{{ call()!.conditional; }}
{{ call?.()}}
<!-- Property read and method call: received -->
{{ object.call() }}
@@ -47,6 +48,7 @@
{{ object?.call()?.conditional; }}
{{ object!.call()!.conditional }}
{{ object!.call()!.conditional; }}
{{ object.call?.()}}
<!-- Method call with parameters -->
{{ call(withParams) }}
@@ -116,4 +118,4 @@ as i }}
{{ (a, b) =>
a / b + 123
}}
{{ someSignal.update(prev => prev + 1) }}
{{ someSignal.update(prev => prev + 1) }}
@@ -373,6 +373,15 @@
# ^ template.ng expression.ng punctuation.terminator.statement.ts
# ^ template.ng expression.ng
# ^^ template.ng punctuation.definition.block.ts
>{{ call?.()}}
#^^ template.ng punctuation.definition.block.ts
# ^ template.ng expression.ng
# ^^^^ template.ng expression.ng entity.name.function.ts
# ^ template.ng expression.ng punctuation.accessor.ts
# ^ template.ng expression.ng punctuation.accessor.ts
# ^ template.ng expression.ng meta.brace.round.ts
# ^ template.ng expression.ng meta.brace.round.ts
# ^^ template.ng punctuation.definition.block.ts
>
><!-- Property read and method call: received -->
#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ template.ng
@@ -478,6 +487,17 @@
# ^ template.ng expression.ng punctuation.terminator.statement.ts
# ^ template.ng expression.ng
# ^^ template.ng punctuation.definition.block.ts
>{{ object.call?.()}}
#^^ template.ng punctuation.definition.block.ts
# ^ template.ng expression.ng
# ^^^^^^ template.ng expression.ng variable.other.object.ts
# ^ template.ng expression.ng punctuation.accessor.ts
# ^^^^ template.ng expression.ng entity.name.function.ts
# ^ template.ng expression.ng punctuation.accessor.ts
# ^ template.ng expression.ng punctuation.accessor.ts
# ^ template.ng expression.ng meta.brace.round.ts
# ^ template.ng expression.ng meta.brace.round.ts
# ^^ template.ng punctuation.definition.block.ts
>
><!-- Method call with parameters -->
#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ template.ng
@@ -1531,5 +1551,4 @@
# ^ template.ng expression.ng constant.numeric.decimal.ts
# ^ template.ng expression.ng meta.brace.round.ts
# ^ template.ng expression.ng
# ^^ template.ng punctuation.definition.block.ts
>
# ^^ template.ng punctuation.definition.block.ts