Skip to content

Commit 863fe48

Browse files
committed
Handle multiline type arguments of a function call better since it could be not followed by parenthesis and be followed instead by template string
Fixes #811
1 parent 07b2724 commit 863fe48

File tree

5 files changed

+261
-55
lines changed

5 files changed

+261
-55
lines changed

TypeScript.YAML-tmLanguage

+36-13
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,11 @@ variables:
6969
typeArgumentsStart: (((keyof|infer|awaited|typeof|readonly)\s+)|(({{identifier}}|{{matchingBraces}}|{{matchingParenthesis}}|{{matchingBrackets}}|{{quotedStrings}})(?=\s*([\<\>\,\.\[]|=>|&(?!&)|\|(?!\|)))))
7070
typeArgumentsInnerExpressionPart: '[^<>\(]|{{matchingParenthesis}}|(?<==)\>'
7171
typeArguments: '<\s*{{typeArgumentsStart}}({{typeArgumentsInnerExpressionPart}}|\<\s*{{typeArgumentsStart}}(({{typeArgumentsInnerExpressionPart}}|\<\s*{{typeArgumentsStart}}({{typeArgumentsInnerExpressionPart}})*(?<!=)\>))*(?<!=)\>)*(?<!=)>'
72-
possiblyMultilineTypeArgumnet: (<\s*[\{\[\(]\s*$)
73-
functionCallLookup: \s*(?:(\?\.\s*)|(\!))?((({{typeArguments}}\s*)?\()|{{possiblyMultilineTypeArgumnet}})
72+
possiblyMultilineTypeArgument: (<\s*[\{\[\(]\s*$)
73+
functionCallLookup: \s*(?:(\?\.\s*)|(\!))?(({{typeArguments}}\s*)?\()
74+
functionCallNamedTarget: (({{identifier}})(\s*{{propertyAccessPreIdentifier}}({{propertyIdentifier}}))*)|({{propertyAccessPreIdentifier}}{{propertyIdentifier}})
75+
functionCallTarget: (({{functionCallNamedTarget}})|(?<=[\)]))
76+
possiblyMultilineCallWithTypeArguments: \s*(?:(\?\.\s*)|(\!))?{{possiblyMultilineTypeArgument}}
7477
possiblyType: \s*([^<>\(\)\{\}]|\<([^<>]|\<[^<>]+\>)+\>|\([^\(\)]+\)|\{[^\{\}]+\})+
7578
typeparamertStartOfArrow: ''
7679
arrowLookup: |-
@@ -1458,23 +1461,43 @@ repository:
14581461

14591462
#function call and new expression
14601463
function-call:
1461-
begin: (?=(((({{identifier}})(\s*{{propertyAccessPreIdentifier}}({{propertyIdentifier}}))*)|({{propertyAccessPreIdentifier}}{{propertyIdentifier}}))|(?<=[\)])){{functionCallLookup}})
1462-
end: (?<=\))(?!(((({{identifier}})(\s*{{propertyAccessPreIdentifier}}({{propertyIdentifier}}))*)|({{propertyAccessPreIdentifier}}{{propertyIdentifier}}))|(?<=[\)])){{functionCallLookup}})
14631464
patterns:
1464-
- name: meta.function-call.ts
1465-
begin: (?=(({{identifier}})(\s*{{propertyAccessPreIdentifier}}({{propertyIdentifier}}))*)|({{propertyAccessPreIdentifier}}{{propertyIdentifier}}))
1466-
end: (?={{functionCallLookup}})
1465+
- begin: (?={{functionCallTarget}}{{functionCallLookup}})
1466+
end: (?<=\))(?!{{functionCallTarget}}{{functionCallLookup}})
14671467
patterns:
1468-
- include: '#support-function-call-identifiers'
1469-
- name: entity.name.function.ts
1470-
match: ({{propertyIdentifier}})
1471-
- include: '#comment'
1468+
- name: meta.function-call.ts
1469+
begin: (?={{functionCallNamedTarget}})
1470+
end: (?={{functionCallLookup}})
1471+
patterns:
1472+
- include: '#function-call-target'
1473+
- include: '#comment'
1474+
- include: '#function-call-optionals'
1475+
- include: '#type-arguments'
1476+
- include: '#paren-expression'
1477+
- begin: (?={{functionCallTarget}}{{possiblyMultilineTypeArgument}})
1478+
end: (?<=\>)(?!{{functionCallTarget}}{{possiblyMultilineTypeArgument}})
1479+
patterns:
1480+
- name: meta.function-call.ts
1481+
begin: (?={{functionCallNamedTarget}})
1482+
end: (?={{possiblyMultilineTypeArgument}})
1483+
patterns:
1484+
- include: '#function-call-target'
1485+
- include: '#comment'
1486+
- include: '#function-call-optionals'
1487+
- include: '#type-arguments'
1488+
1489+
function-call-target:
1490+
patterns:
1491+
- include: '#support-function-call-identifiers'
1492+
- name: entity.name.function.ts
1493+
match: ({{propertyIdentifier}})
1494+
1495+
function-call-optionals:
1496+
patterns:
14721497
- name: meta.function-call.ts punctuation.accessor.optional.ts
14731498
match: \?\.
14741499
- name: meta.function-call.ts keyword.operator.definiteassignment.ts
14751500
match: \!
1476-
- include: '#type-arguments'
1477-
- include: '#paren-expression'
14781501

14791502
support-function-call-identifiers:
14801503
patterns:

TypeScript.tmLanguage

+82-21
Original file line numberDiff line numberDiff line change
@@ -4706,37 +4706,106 @@
47064706
</dict>
47074707
<key>function-call</key>
47084708
<dict>
4709-
<key>begin</key>
4710-
<string>(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?&lt;=[\)]))\s*(?:(\?\.\s*)|(\!))?(((&lt;\s*(((keyof|infer|awaited|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|awaited|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|awaited|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)?\()|(&lt;\s*[\{\[\(]\s*$)))</string>
4711-
<key>end</key>
4712-
<string>(?&lt;=\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?&lt;=[\)]))\s*(?:(\?\.\s*)|(\!))?(((&lt;\s*(((keyof|infer|awaited|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|awaited|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|awaited|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)?\()|(&lt;\s*[\{\[\(]\s*$)))</string>
47134709
<key>patterns</key>
47144710
<array>
47154711
<dict>
4716-
<key>name</key>
4717-
<string>meta.function-call.ts</string>
47184712
<key>begin</key>
4719-
<string>(?=(([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))</string>
4713+
<string>(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?&lt;=[\)]))\s*(?:(\?\.\s*)|(\!))?((&lt;\s*(((keyof|infer|awaited|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|awaited|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|awaited|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)?\())</string>
47204714
<key>end</key>
4721-
<string>(?=\s*(?:(\?\.\s*)|(\!))?(((&lt;\s*(((keyof|infer|awaited|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|awaited|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|awaited|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)?\()|(&lt;\s*[\{\[\(]\s*$)))</string>
4715+
<string>(?&lt;=\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?&lt;=[\)]))\s*(?:(\?\.\s*)|(\!))?((&lt;\s*(((keyof|infer|awaited|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|awaited|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|awaited|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)?\())</string>
47224716
<key>patterns</key>
47234717
<array>
4718+
<dict>
4719+
<key>name</key>
4720+
<string>meta.function-call.ts</string>
4721+
<key>begin</key>
4722+
<string>(?=(([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))</string>
4723+
<key>end</key>
4724+
<string>(?=\s*(?:(\?\.\s*)|(\!))?((&lt;\s*(((keyof|infer|awaited|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|awaited|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))(([^&lt;&gt;\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?&lt;==)\&gt;|\&lt;\s*(((keyof|infer|awaited|typeof|readonly)\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|(\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))(?=\s*([\&lt;\&gt;\,\.\[]|=&gt;|&amp;(?!&amp;)|\|(?!\|)))))([^&lt;&gt;\(]|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(?&lt;==)\&gt;)*(?&lt;!=)\&gt;))*(?&lt;!=)\&gt;)*(?&lt;!=)&gt;\s*)?\())</string>
4725+
<key>patterns</key>
4726+
<array>
4727+
<dict>
4728+
<key>include</key>
4729+
<string>#function-call-target</string>
4730+
</dict>
4731+
</array>
4732+
</dict>
4733+
<dict>
4734+
<key>include</key>
4735+
<string>#comment</string>
4736+
</dict>
4737+
<dict>
4738+
<key>include</key>
4739+
<string>#function-call-optionals</string>
4740+
</dict>
47244741
<dict>
47254742
<key>include</key>
4726-
<string>#support-function-call-identifiers</string>
4743+
<string>#type-arguments</string>
47274744
</dict>
4745+
<dict>
4746+
<key>include</key>
4747+
<string>#paren-expression</string>
4748+
</dict>
4749+
</array>
4750+
</dict>
4751+
<dict>
4752+
<key>begin</key>
4753+
<string>(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?&lt;=[\)]))(&lt;\s*[\{\[\(]\s*$))</string>
4754+
<key>end</key>
4755+
<string>(?&lt;=\&gt;)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))|(?&lt;=[\)]))(&lt;\s*[\{\[\(]\s*$))</string>
4756+
<key>patterns</key>
4757+
<array>
47284758
<dict>
47294759
<key>name</key>
4730-
<string>entity.name.function.ts</string>
4731-
<key>match</key>
4732-
<string>(\#?[_$[:alpha:]][_$[:alnum:]]*)</string>
4760+
<string>meta.function-call.ts</string>
4761+
<key>begin</key>
4762+
<string>(?=(([_$[:alpha:]][_$[:alnum:]]*)(\s*\??\.\s*(\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\??\.\s*\#?[_$[:alpha:]][_$[:alnum:]]*))</string>
4763+
<key>end</key>
4764+
<string>(?=(&lt;\s*[\{\[\(]\s*$))</string>
4765+
<key>patterns</key>
4766+
<array>
4767+
<dict>
4768+
<key>include</key>
4769+
<string>#function-call-target</string>
4770+
</dict>
4771+
</array>
4772+
</dict>
4773+
<dict>
4774+
<key>include</key>
4775+
<string>#comment</string>
4776+
</dict>
4777+
<dict>
4778+
<key>include</key>
4779+
<string>#function-call-optionals</string>
4780+
</dict>
4781+
<dict>
4782+
<key>include</key>
4783+
<string>#type-arguments</string>
47334784
</dict>
47344785
</array>
47354786
</dict>
4787+
</array>
4788+
</dict>
4789+
<key>function-call-target</key>
4790+
<dict>
4791+
<key>patterns</key>
4792+
<array>
47364793
<dict>
47374794
<key>include</key>
4738-
<string>#comment</string>
4795+
<string>#support-function-call-identifiers</string>
47394796
</dict>
4797+
<dict>
4798+
<key>name</key>
4799+
<string>entity.name.function.ts</string>
4800+
<key>match</key>
4801+
<string>(\#?[_$[:alpha:]][_$[:alnum:]]*)</string>
4802+
</dict>
4803+
</array>
4804+
</dict>
4805+
<key>function-call-optionals</key>
4806+
<dict>
4807+
<key>patterns</key>
4808+
<array>
47404809
<dict>
47414810
<key>name</key>
47424811
<string>meta.function-call.ts punctuation.accessor.optional.ts</string>
@@ -4749,14 +4818,6 @@
47494818
<key>match</key>
47504819
<string>\!</string>
47514820
</dict>
4752-
<dict>
4753-
<key>include</key>
4754-
<string>#type-arguments</string>
4755-
</dict>
4756-
<dict>
4757-
<key>include</key>
4758-
<string>#paren-expression</string>
4759-
</dict>
47604821
</array>
47614822
</dict>
47624823
<key>support-function-call-identifiers</key>

0 commit comments

Comments
 (0)