@@ -566,3 +566,67 @@ describe 'Rust grammar', ->
566
566
expect (tokens[1 ]).toEqual value : ' ' , scopes : [' source.rust' ]
567
567
expect (tokens[2 ]).toEqual value : ' foo' , scopes : [ ' source.rust' , ' entity.name.function.rust' ]
568
568
expect (tokens[3 ]).toEqual value : ' (fn_x: ()) ' , scopes : [ ' source.rust' ]
569
+
570
+ it ' tokenizes function calls with type arguments' , ->
571
+ tokens = grammar .tokenizeLines ('''
572
+ fn main() {
573
+ foo::bar::<i32, ()>();
574
+ _func::<i32, ()>();
575
+ }
576
+ ''' )
577
+ expect (tokens[1 ][0 ]).toEqual value : ' foo' , scopes : [' source.rust' ]
578
+ expect (tokens[1 ][1 ]).toEqual value : ' ::' , scopes : [' source.rust' , ' keyword.operator.misc.rust' ]
579
+ expect (tokens[1 ][2 ]).toEqual value : ' bar' , scopes : [' source.rust' , ' entity.name.function.rust' ]
580
+ expect (tokens[1 ][3 ]).toEqual value : ' ::' , scopes : [' source.rust' , ' keyword.operator.misc.rust' ]
581
+ expect (tokens[1 ][4 ]).toEqual value : ' <' , scopes : [' source.rust' , ' meta.type_params.rust' ]
582
+ expect (tokens[1 ][5 ]).toEqual value : ' i32' , scopes : [' source.rust' , ' meta.type_params.rust' , ' storage.type.core.rust' ]
583
+ expect (tokens[1 ][6 ]).toEqual value : ' , ()' , scopes : [' source.rust' , ' meta.type_params.rust' ]
584
+ expect (tokens[1 ][7 ]).toEqual value : ' >' , scopes : [' source.rust' , ' meta.type_params.rust' ]
585
+ expect (tokens[1 ][8 ]).toEqual value : ' (' , scopes : [' source.rust' ]
586
+ expect (tokens[1 ][9 ]).toEqual value : ' );' , scopes : [' source.rust' ]
587
+
588
+ expect (tokens[2 ][0 ]).toEqual value : ' _func' , scopes : [' source.rust' , ' entity.name.function.rust' ]
589
+ expect (tokens[2 ][1 ]).toEqual value : ' ::' , scopes : [' source.rust' , ' keyword.operator.misc.rust' ]
590
+ expect (tokens[2 ][2 ]).toEqual value : ' <' , scopes : [' source.rust' , ' meta.type_params.rust' ]
591
+ expect (tokens[2 ][3 ]).toEqual value : ' i32' , scopes : [' source.rust' , ' meta.type_params.rust' , ' storage.type.core.rust' ]
592
+ expect (tokens[2 ][4 ]).toEqual value : ' , ()' , scopes : [' source.rust' , ' meta.type_params.rust' ]
593
+ expect (tokens[2 ][5 ]).toEqual value : ' >' , scopes : [' source.rust' , ' meta.type_params.rust' ]
594
+ expect (tokens[2 ][6 ]).toEqual value : ' (' , scopes : [' source.rust' ]
595
+ expect (tokens[2 ][7 ]).toEqual value : ' );' , scopes : [' source.rust' ]
596
+
597
+ it ' tokenizes function calls without type arguments' , ->
598
+ tokens = grammar .tokenizeLines ('''
599
+ fn main() {
600
+ foo.call();
601
+ }
602
+ ''' )
603
+ expect (tokens[1 ][0 ]).toEqual value : ' foo.' , scopes : [' source.rust' ]
604
+ expect (tokens[1 ][1 ]).toEqual value : ' call' , scopes : [' source.rust' , ' entity.name.function.rust' ]
605
+ expect (tokens[1 ][2 ]).toEqual value : ' (' , scopes : [' source.rust' ]
606
+ expect (tokens[1 ][3 ]).toEqual value : ' );' , scopes : [' source.rust' ]
607
+
608
+ it ' tokenizes function names correctly' , ->
609
+ tokens = grammar .tokenizeLines ('''
610
+ fn main() {
611
+ a();
612
+ a1();
613
+ a_();
614
+ a_1();
615
+ a1_();
616
+ _a();
617
+ _0();
618
+ _a0();
619
+ _0a();
620
+ __();
621
+ }
622
+ ''' )
623
+ expect (tokens[1 ][0 ]).toEqual value : ' a' , scopes : [' source.rust' , ' entity.name.function.rust' ]
624
+ expect (tokens[2 ][0 ]).toEqual value : ' a1' , scopes : [' source.rust' , ' entity.name.function.rust' ]
625
+ expect (tokens[3 ][0 ]).toEqual value : ' a_' , scopes : [' source.rust' , ' entity.name.function.rust' ]
626
+ expect (tokens[4 ][0 ]).toEqual value : ' a_1' , scopes : [' source.rust' , ' entity.name.function.rust' ]
627
+ expect (tokens[5 ][0 ]).toEqual value : ' a1_' , scopes : [' source.rust' , ' entity.name.function.rust' ]
628
+ expect (tokens[6 ][0 ]).toEqual value : ' _a' , scopes : [' source.rust' , ' entity.name.function.rust' ]
629
+ expect (tokens[7 ][0 ]).toEqual value : ' _0' , scopes : [' source.rust' , ' entity.name.function.rust' ]
630
+ expect (tokens[8 ][0 ]).toEqual value : ' _a0' , scopes : [' source.rust' , ' entity.name.function.rust' ]
631
+ expect (tokens[9 ][0 ]).toEqual value : ' _0a' , scopes : [' source.rust' , ' entity.name.function.rust' ]
632
+ expect (tokens[10 ][0 ]).toEqual value : ' __' , scopes : [' source.rust' , ' entity.name.function.rust' ]
0 commit comments