@@ -277,7 +277,6 @@ async def generate_sem_sub_tokens(
277
277
) -> AsyncIterator [SemTokenInfo ]:
278
278
from robot .parsing .lexer .tokens import Token as RobotToken
279
279
from robot .parsing .model .statements import (
280
- Arguments ,
281
280
Documentation ,
282
281
Fixture ,
283
282
LibraryImport ,
@@ -309,7 +308,7 @@ async def generate_sem_sub_tokens(
309
308
310
309
yield SemTokenInfo .from_token (
311
310
token ,
312
- SemanticTokenTypes . PARAMETER if isinstance ( node , Arguments ) else sem_type ,
311
+ sem_type ,
313
312
sem_mod ,
314
313
col_offset + 2 ,
315
314
last_index - 2 ,
@@ -497,24 +496,46 @@ async def generate_sem_tokens(
497
496
resources_matchers : Dict [KeywordMatcher , ResourceEntry ],
498
497
) -> AsyncIterator [SemTokenInfo ]:
499
498
from robot .parsing .lexer .tokens import Token as RobotToken
500
- from robot .parsing .model .statements import Variable
499
+ from robot .parsing .model .statements import Arguments , Variable
501
500
from robot .utils .escaping import split_from_equals
502
501
503
502
if token .type in {RobotToken .ARGUMENT , RobotToken .TESTCASE_NAME , RobotToken .KEYWORD_NAME }:
504
- if isinstance (node , Variable ) and token .type == RobotToken .ARGUMENT and node .name and node .name [0 ] == "&" :
503
+ if (
504
+ isinstance (node , Variable ) and token .type == RobotToken .ARGUMENT and node .name and node .name [0 ] == "&"
505
+ ) or (isinstance (node , Arguments )):
505
506
name , value = split_from_equals (token .value )
506
507
if value is not None :
507
508
length = len (name )
508
509
509
510
yield SemTokenInfo .from_token (
510
- RobotToken (ROBOT_NAMED_ARGUMENT , name , token .lineno , token .col_offset ),
511
- RobotSemTokenTypes .NAMED_ARGUMENT ,
511
+ RobotToken (
512
+ ROBOT_NAMED_ARGUMENT if isinstance (node , Variable ) else SemanticTokenTypes .PARAMETER ,
513
+ name ,
514
+ token .lineno ,
515
+ token .col_offset ,
516
+ ),
517
+ RobotSemTokenTypes .NAMED_ARGUMENT
518
+ if isinstance (node , Variable )
519
+ else SemanticTokenTypes .PARAMETER ,
512
520
)
513
521
yield SemTokenInfo .from_token (
514
522
RobotToken (ROBOT_OPERATOR , "=" , token .lineno , token .col_offset + length ),
515
523
SemanticTokenTypes .OPERATOR ,
516
524
)
517
525
token = RobotToken (token .type , value , token .lineno , token .col_offset + length + 1 , token .error )
526
+ elif isinstance (node , Arguments ) and name :
527
+ yield SemTokenInfo .from_token (
528
+ RobotToken (
529
+ ROBOT_NAMED_ARGUMENT if isinstance (node , Variable ) else SemanticTokenTypes .PARAMETER ,
530
+ name ,
531
+ token .lineno ,
532
+ token .col_offset ,
533
+ ),
534
+ RobotSemTokenTypes .NAMED_ARGUMENT
535
+ if isinstance (node , Variable )
536
+ else SemanticTokenTypes .PARAMETER ,
537
+ )
538
+ token = RobotToken (token .type , "" , token .lineno , token .col_offset + len (name ), token .error )
518
539
519
540
for sub_token in self ._tokenize_variables (
520
541
token ,
0 commit comments