Skip to content

Commit 191f6c2

Browse files
committed
Fix function call type parameters
1 parent 0178496 commit 191f6c2

20 files changed

+402
-86
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -413,10 +413,16 @@ repository:
413413
- include: '#class-or-interface-heritage-type'
414414

415415
class-or-interface-heritage-type:
416-
name: meta.object.heritage.parent.ts
417-
match: '(?:\b([_$[:alpha:]][_$[:alnum:]]*)\b)'
418-
captures:
419-
'1': { name: entity.other.inherited-class.ts }
416+
patterns:
417+
- name: meta.object.heritage.parent.ts
418+
match: \b([_$[:alpha:]][_$[:alnum:]]*)\s*(\.)
419+
captures:
420+
'1': { name: entity.name.type.module.ts }
421+
'2': { name: punctuation.accessor.ts }
422+
- name: meta.object.heritage.parent.ts
423+
match: '(?:\b([_$[:alpha:]][_$[:alnum:]]*)\b)'
424+
captures:
425+
'1': { name: entity.other.inherited-class.ts }
420426

421427
class-or-interface-body:
422428
name: meta.object.body.ts
@@ -802,10 +808,9 @@ repository:
802808

803809
type-parameters:
804810
name: meta.type.parameters.ts
805-
begin: '([_$[:alpha:]][_$[:alnum:]]*)?(<)'
811+
begin: '(<)'
806812
beginCaptures:
807-
'1': { name: entity.name.type.ts }
808-
'2': { name: punctuation.definition.typeparameters.begin.ts }
813+
'1': { name: punctuation.definition.typeparameters.begin.ts }
809814
end: '(?=$)|(>)'
810815
endCaptures:
811816
'1': { name: punctuation.definition.typeparameters.end.ts }
@@ -888,7 +893,19 @@ repository:
888893
function-call:
889894
name: functioncall.expr.ts
890895
patterns:
891-
- include: '#type-parameters'
896+
- name: meta.type.parameters.ts
897+
begin: '([_$[:alpha:]][_$[:alnum:]]*)(<)(?=(([^<>]+)|(\<[^<>]\>))*>\s*\()'
898+
beginCaptures:
899+
'1': { name: entity.name.function.ts }
900+
'2': { name: punctuation.definition.typeparameters.begin.ts }
901+
end: '(>)'
902+
endCaptures:
903+
'1': { name: punctuation.definition.typeparameters.end.ts }
904+
patterns:
905+
- include: '#comment'
906+
- include: '#type'
907+
#TODO: Scope function names and method names
908+
#TODO: Scope function call arguments better?
892909
- include: '#paren-expression'
893910

894911
cast:

TypeScript.tmLanguage

Lines changed: 72 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -499,18 +499,42 @@
499499
</dict>
500500
<key>class-or-interface-heritage-type</key>
501501
<dict>
502-
<key>captures</key>
503-
<dict>
504-
<key>1</key>
502+
<key>patterns</key>
503+
<array>
505504
<dict>
505+
<key>captures</key>
506+
<dict>
507+
<key>1</key>
508+
<dict>
509+
<key>name</key>
510+
<string>entity.name.type.module.ts</string>
511+
</dict>
512+
<key>2</key>
513+
<dict>
514+
<key>name</key>
515+
<string>punctuation.accessor.ts</string>
516+
</dict>
517+
</dict>
518+
<key>match</key>
519+
<string>\b([_$[:alpha:]][_$[:alnum:]]*)\s*(\.)</string>
506520
<key>name</key>
507-
<string>entity.other.inherited-class.ts</string>
521+
<string>meta.object.heritage.parent.ts</string>
508522
</dict>
509-
</dict>
510-
<key>match</key>
511-
<string>(?:\b([_$[:alpha:]][_$[:alnum:]]*)\b)</string>
512-
<key>name</key>
513-
<string>meta.object.heritage.parent.ts</string>
523+
<dict>
524+
<key>captures</key>
525+
<dict>
526+
<key>1</key>
527+
<dict>
528+
<key>name</key>
529+
<string>entity.other.inherited-class.ts</string>
530+
</dict>
531+
</dict>
532+
<key>match</key>
533+
<string>(?:\b([_$[:alpha:]][_$[:alnum:]]*)\b)</string>
534+
<key>name</key>
535+
<string>meta.object.heritage.parent.ts</string>
536+
</dict>
537+
</array>
514538
</dict>
515539
<key>class-or-interface-name</key>
516540
<dict>
@@ -1392,8 +1416,44 @@
13921416
<key>patterns</key>
13931417
<array>
13941418
<dict>
1395-
<key>include</key>
1396-
<string>#type-parameters</string>
1419+
<key>begin</key>
1420+
<string>([_$[:alpha:]][_$[:alnum:]]*)(&lt;)(?=(([^&lt;&gt;]+)|(\&lt;[^&lt;&gt;]\&gt;))*&gt;\s*\()</string>
1421+
<key>beginCaptures</key>
1422+
<dict>
1423+
<key>1</key>
1424+
<dict>
1425+
<key>name</key>
1426+
<string>entity.name.function.ts</string>
1427+
</dict>
1428+
<key>2</key>
1429+
<dict>
1430+
<key>name</key>
1431+
<string>punctuation.definition.typeparameters.begin.ts</string>
1432+
</dict>
1433+
</dict>
1434+
<key>end</key>
1435+
<string>(&gt;)</string>
1436+
<key>endCaptures</key>
1437+
<dict>
1438+
<key>1</key>
1439+
<dict>
1440+
<key>name</key>
1441+
<string>punctuation.definition.typeparameters.end.ts</string>
1442+
</dict>
1443+
</dict>
1444+
<key>name</key>
1445+
<string>meta.type.parameters.ts</string>
1446+
<key>patterns</key>
1447+
<array>
1448+
<dict>
1449+
<key>include</key>
1450+
<string>#comment</string>
1451+
</dict>
1452+
<dict>
1453+
<key>include</key>
1454+
<string>#type</string>
1455+
</dict>
1456+
</array>
13971457
</dict>
13981458
<dict>
13991459
<key>include</key>
@@ -3658,15 +3718,10 @@
36583718
<key>type-parameters</key>
36593719
<dict>
36603720
<key>begin</key>
3661-
<string>([_$[:alpha:]][_$[:alnum:]]*)?(&lt;)</string>
3721+
<string>(&lt;)</string>
36623722
<key>beginCaptures</key>
36633723
<dict>
36643724
<key>1</key>
3665-
<dict>
3666-
<key>name</key>
3667-
<string>entity.name.type.ts</string>
3668-
</dict>
3669-
<key>2</key>
36703725
<dict>
36713726
<key>name</key>
36723727
<string>punctuation.definition.typeparameters.begin.ts</string>

TypeScriptReact.YAML-tmLanguage

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -417,10 +417,16 @@ repository:
417417
- include: '#class-or-interface-heritage-type'
418418

419419
class-or-interface-heritage-type:
420-
name: meta.object.heritage.parent.tsx
421-
match: '(?:\b([_$[:alpha:]][_$[:alnum:]]*)\b)'
422-
captures:
423-
'1': { name: entity.other.inherited-class.tsx }
420+
patterns:
421+
- name: meta.object.heritage.parent.tsx
422+
match: \b([_$[:alpha:]][_$[:alnum:]]*)\s*(\.)
423+
captures:
424+
'1': { name: entity.name.type.module.tsx }
425+
'2': { name: punctuation.accessor.tsx }
426+
- name: meta.object.heritage.parent.tsx
427+
match: '(?:\b([_$[:alpha:]][_$[:alnum:]]*)\b)'
428+
captures:
429+
'1': { name: entity.other.inherited-class.tsx }
424430

425431
class-or-interface-body:
426432
name: meta.object.body.tsx
@@ -806,10 +812,9 @@ repository:
806812

807813
type-parameters:
808814
name: meta.type.parameters.tsx
809-
begin: '([_$[:alpha:]][_$[:alnum:]]*)?(<)'
815+
begin: '(<)'
810816
beginCaptures:
811-
'1': { name: entity.name.type.tsx }
812-
'2': { name: punctuation.definition.typeparameters.begin.tsx }
817+
'1': { name: punctuation.definition.typeparameters.begin.tsx }
813818
end: '(?=$)|(>)'
814819
endCaptures:
815820
'1': { name: punctuation.definition.typeparameters.end.tsx }
@@ -893,7 +898,19 @@ repository:
893898
function-call:
894899
name: functioncall.expr.tsx
895900
patterns:
896-
- include: '#type-parameters'
901+
- name: meta.type.parameters.tsx
902+
begin: '([_$[:alpha:]][_$[:alnum:]]*)(<)(?=(([^<>]+)|(\<[^<>]\>))*>\s*\()'
903+
beginCaptures:
904+
'1': { name: entity.name.function.tsx }
905+
'2': { name: punctuation.definition.typeparameters.begin.tsx }
906+
end: '(>)'
907+
endCaptures:
908+
'1': { name: punctuation.definition.typeparameters.end.tsx }
909+
patterns:
910+
- include: '#comment'
911+
- include: '#type'
912+
#TODO: Scope function names and method names
913+
#TODO: Scope function call arguments better?
897914
- include: '#paren-expression'
898915

899916
new-expr:

TypeScriptReact.tmLanguage

Lines changed: 72 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -467,18 +467,42 @@
467467
</dict>
468468
<key>class-or-interface-heritage-type</key>
469469
<dict>
470-
<key>captures</key>
471-
<dict>
472-
<key>1</key>
470+
<key>patterns</key>
471+
<array>
473472
<dict>
473+
<key>captures</key>
474+
<dict>
475+
<key>1</key>
476+
<dict>
477+
<key>name</key>
478+
<string>entity.name.type.module.tsx</string>
479+
</dict>
480+
<key>2</key>
481+
<dict>
482+
<key>name</key>
483+
<string>punctuation.accessor.tsx</string>
484+
</dict>
485+
</dict>
486+
<key>match</key>
487+
<string>\b([_$[:alpha:]][_$[:alnum:]]*)\s*(\.)</string>
474488
<key>name</key>
475-
<string>entity.other.inherited-class.tsx</string>
489+
<string>meta.object.heritage.parent.tsx</string>
476490
</dict>
477-
</dict>
478-
<key>match</key>
479-
<string>(?:\b([_$[:alpha:]][_$[:alnum:]]*)\b)</string>
480-
<key>name</key>
481-
<string>meta.object.heritage.parent.tsx</string>
491+
<dict>
492+
<key>captures</key>
493+
<dict>
494+
<key>1</key>
495+
<dict>
496+
<key>name</key>
497+
<string>entity.other.inherited-class.tsx</string>
498+
</dict>
499+
</dict>
500+
<key>match</key>
501+
<string>(?:\b([_$[:alpha:]][_$[:alnum:]]*)\b)</string>
502+
<key>name</key>
503+
<string>meta.object.heritage.parent.tsx</string>
504+
</dict>
505+
</array>
482506
</dict>
483507
<key>class-or-interface-name</key>
484508
<dict>
@@ -1360,8 +1384,44 @@
13601384
<key>patterns</key>
13611385
<array>
13621386
<dict>
1363-
<key>include</key>
1364-
<string>#type-parameters</string>
1387+
<key>begin</key>
1388+
<string>([_$[:alpha:]][_$[:alnum:]]*)(&lt;)(?=(([^&lt;&gt;]+)|(\&lt;[^&lt;&gt;]\&gt;))*&gt;\s*\()</string>
1389+
<key>beginCaptures</key>
1390+
<dict>
1391+
<key>1</key>
1392+
<dict>
1393+
<key>name</key>
1394+
<string>entity.name.function.tsx</string>
1395+
</dict>
1396+
<key>2</key>
1397+
<dict>
1398+
<key>name</key>
1399+
<string>punctuation.definition.typeparameters.begin.tsx</string>
1400+
</dict>
1401+
</dict>
1402+
<key>end</key>
1403+
<string>(&gt;)</string>
1404+
<key>endCaptures</key>
1405+
<dict>
1406+
<key>1</key>
1407+
<dict>
1408+
<key>name</key>
1409+
<string>punctuation.definition.typeparameters.end.tsx</string>
1410+
</dict>
1411+
</dict>
1412+
<key>name</key>
1413+
<string>meta.type.parameters.tsx</string>
1414+
<key>patterns</key>
1415+
<array>
1416+
<dict>
1417+
<key>include</key>
1418+
<string>#comment</string>
1419+
</dict>
1420+
<dict>
1421+
<key>include</key>
1422+
<string>#type</string>
1423+
</dict>
1424+
</array>
13651425
</dict>
13661426
<dict>
13671427
<key>include</key>
@@ -4048,15 +4108,10 @@
40484108
<key>type-parameters</key>
40494109
<dict>
40504110
<key>begin</key>
4051-
<string>([_$[:alpha:]][_$[:alnum:]]*)?(&lt;)</string>
4111+
<string>(&lt;)</string>
40524112
<key>beginCaptures</key>
40534113
<dict>
40544114
<key>1</key>
4055-
<dict>
4056-
<key>name</key>
4057-
<string>entity.name.type.tsx</string>
4058-
</dict>
4059-
<key>2</key>
40604115
<dict>
40614116
<key>name</key>
40624117
<string>punctuation.definition.typeparameters.begin.tsx</string>

tests/baselines/Comments.baseline.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1425,7 +1425,7 @@ var x = new ^^/* comments */ String();
14251425
^
14261426
source.ts meta.declaration.object.ts meta.object.heritage.ts
14271427
^^^^^
1428-
source.ts meta.declaration.object.ts meta.object.heritage.ts meta.type.parameters.ts entity.name.type.ts
1428+
source.ts meta.declaration.object.ts meta.object.heritage.ts meta.object.heritage.parent.ts entity.other.inherited-class.ts
14291429
^
14301430
source.ts meta.declaration.object.ts meta.object.heritage.ts meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts
14311431
^
@@ -1490,7 +1490,7 @@ var x = new ^^/* comments */ String();
14901490
^
14911491
source.ts meta.declaration.object.ts meta.object.heritage.ts
14921492
^^^^^
1493-
source.ts meta.declaration.object.ts meta.object.heritage.ts meta.type.parameters.ts entity.name.type.ts
1493+
source.ts meta.declaration.object.ts meta.object.heritage.ts meta.object.heritage.parent.ts entity.other.inherited-class.ts
14941494
^
14951495
source.ts meta.declaration.object.ts meta.object.heritage.ts meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts
14961496
^
@@ -1555,7 +1555,7 @@ var x = new ^^/* comments */ String();
15551555
^^
15561556
source.ts meta.declaration.object.ts meta.object.heritage.ts comment.block.ts punctuation.definition.comment.ts
15571557
^^^^^
1558-
source.ts meta.declaration.object.ts meta.object.heritage.ts meta.type.parameters.ts entity.name.type.ts
1558+
source.ts meta.declaration.object.ts meta.object.heritage.ts meta.object.heritage.parent.ts entity.other.inherited-class.ts
15591559
^
15601560
source.ts meta.declaration.object.ts meta.object.heritage.ts meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts
15611561
^
@@ -1685,7 +1685,7 @@ var x = new ^^/* comments */ String();
16851685
^
16861686
source.ts meta.declaration.object.ts meta.object.heritage.ts
16871687
^^^^^
1688-
source.ts meta.declaration.object.ts meta.object.heritage.ts meta.type.parameters.ts entity.name.type.ts
1688+
source.ts meta.declaration.object.ts meta.object.heritage.ts meta.object.heritage.parent.ts entity.other.inherited-class.ts
16891689
^
16901690
source.ts meta.declaration.object.ts meta.object.heritage.ts meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts
16911691
^

tests/baselines/FunctionMethodParameters.baseline.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ class testClass {
213213
^
214214
source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts
215215
^^^^^
216-
source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.parameters.ts entity.name.type.ts
216+
source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts entity.name.type.ts
217217
^
218218
source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts
219219
^^^^^^
@@ -551,7 +551,7 @@ class testClass {
551551
^
552552
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts
553553
^^^^^
554-
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.parameters.ts entity.name.type.ts
554+
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts entity.name.type.ts
555555
^
556556
source.ts meta.declaration.object.ts meta.object.body.ts meta.method.declaration.ts meta.parameters.ts meta.type.annotation.ts meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts
557557
^^^^^^

0 commit comments

Comments
 (0)