@@ -441,6 +441,27 @@ describe 'Rust grammar', ->
441
441
expect (tokens[4 ]).toEqual value : ' MyTupleStruct' , scopes : [' source.rust' , ' entity.name.type.rust' ]
442
442
expect (tokens[6 ]).toEqual value : ' pub' , scopes : [' source.rust' , ' storage.modifier.visibility.rust' ]
443
443
444
+ it ' tokenizes unions' , ->
445
+ tokens = grammar .tokenizeLines ('''
446
+ pub union MyUnion<'foo> {
447
+ pub one: u32,
448
+ two: Option<'a, MyEnum>,
449
+ three: &'foo i32,
450
+ }
451
+ ''' )
452
+ expect (tokens[0 ][0 ]).toEqual value : ' pub' , scopes : [' source.rust' , ' storage.modifier.visibility.rust' ]
453
+ expect (tokens[0 ][2 ]).toEqual value : ' union' , scopes : [' source.rust' , ' storage.type.rust' ]
454
+ expect (tokens[0 ][4 ]).toEqual value : ' MyUnion' , scopes : [' source.rust' , ' entity.name.type.rust' ]
455
+ expect (tokens[0 ][5 ]).toEqual value : ' <' , scopes : [' source.rust' , ' meta.type_params.rust' ]
456
+ expect (tokens[0 ][6 ]).toEqual value : ' \' ' , scopes : [' source.rust' , ' meta.type_params.rust' , ' storage.modifier.lifetime.rust' ]
457
+ expect (tokens[0 ][7 ]).toEqual value : ' foo' , scopes : [' source.rust' , ' meta.type_params.rust' , ' storage.modifier.lifetime.rust' , ' entity.name.lifetime.rust' ]
458
+ expect (tokens[1 ][1 ]).toEqual value : ' pub' , scopes : [' source.rust' , ' storage.modifier.visibility.rust' ]
459
+ expect (tokens[2 ][3 ]).toEqual value : ' \' ' , scopes : [' source.rust' , ' storage.modifier.lifetime.rust' ]
460
+ expect (tokens[2 ][4 ]).toEqual value : ' a' , scopes : [' source.rust' , ' storage.modifier.lifetime.rust' , ' entity.name.lifetime.rust' ]
461
+ expect (tokens[3 ][2 ]).toEqual value : ' \' ' , scopes : [' source.rust' , ' storage.modifier.lifetime.rust' ]
462
+ expect (tokens[3 ][3 ]).toEqual value : ' foo' , scopes : [' source.rust' , ' storage.modifier.lifetime.rust' , ' entity.name.lifetime.rust' ]
463
+
464
+
444
465
it ' tokenizes type aliases' , ->
445
466
{tokens } = grammar .tokenizeLine (' type MyType = u32;' )
446
467
expect (tokens[0 ]).toEqual value : ' type' , scopes : [' source.rust' , ' storage.type.rust' ]
0 commit comments