@@ -294,7 +294,7 @@ def _visit_Variable(self, node: Variable) -> None: # noqa: N802
294
294
if get_robot_version () >= (7 , 0 ):
295
295
296
296
def visit_Var (self , node : Statement ) -> None : # noqa: N802
297
- self ._visit_statement (node )
297
+ self ._analyze_statement_variables (node )
298
298
299
299
variable = node .get_token (Token .VARIABLE )
300
300
if variable is None :
@@ -348,13 +348,15 @@ def visit_Var(self, node: Statement) -> None: # noqa: N802
348
348
pass
349
349
350
350
def visit_Statement (self , node : Statement ) -> None : # noqa: N802
351
- self ._visit_statement (node )
351
+ self ._analyze_statement_variables (node )
352
352
353
- def _visit_statement (self , node : Statement , severity : DiagnosticSeverity = DiagnosticSeverity .ERROR ) -> None :
353
+ def _analyze_statement_variables (
354
+ self , node : Statement , severity : DiagnosticSeverity = DiagnosticSeverity .ERROR
355
+ ) -> None :
354
356
for token in node .get_tokens (Token .ARGUMENT ):
355
357
self ._analyze_token_variables (token , severity )
356
358
357
- def _visit_expression_statement (
359
+ def _analyze_statement_expression_variables (
358
360
self , node : Statement , severity : DiagnosticSeverity = DiagnosticSeverity .ERROR
359
361
) -> None :
360
362
@@ -367,7 +369,7 @@ def _visit_settings_statement(
367
369
) -> None :
368
370
self ._in_setting = True
369
371
try :
370
- self ._visit_statement (node , severity )
372
+ self ._analyze_statement_variables (node , severity )
371
373
finally :
372
374
self ._in_setting = False
373
375
@@ -921,7 +923,7 @@ def visit_Fixture(self, node: Fixture) -> None: # noqa: N802
921
923
922
924
if keyword_token is not None and keyword_token .value and keyword_token .value .upper () not in ("" , "NONE" ):
923
925
self ._analyze_token_variables (keyword_token )
924
- self ._visit_statement (node )
926
+ self ._analyze_statement_variables (node )
925
927
926
928
self ._analyze_keyword_call (
927
929
node ,
@@ -977,7 +979,7 @@ def visit_KeywordCall(self, node: KeywordCall) -> None: # noqa: N802
977
979
return
978
980
979
981
self ._analyze_token_variables (keyword_token )
980
- self ._visit_statement (node )
982
+ self ._analyze_statement_variables (node )
981
983
982
984
self ._analyze_keyword_call (
983
985
node ,
@@ -1202,12 +1204,12 @@ def _analyze_assign_statement(self, node: Statement) -> None:
1202
1204
pass
1203
1205
1204
1206
def visit_InlineIfHeader (self , node : Statement ) -> None : # noqa: N802
1205
- self ._visit_expression_statement (node )
1207
+ self ._analyze_statement_expression_variables (node )
1206
1208
1207
1209
self ._analyze_assign_statement (node )
1208
1210
1209
1211
def visit_ForHeader (self , node : Statement ) -> None : # noqa: N802
1210
- self ._visit_statement (node )
1212
+ self ._analyze_statement_variables (node )
1211
1213
1212
1214
variables = node .get_tokens (Token .VARIABLE )
1213
1215
for variable in variables :
@@ -1243,7 +1245,8 @@ def visit_ForHeader(self, node: Statement) -> None: # noqa: N802
1243
1245
)
1244
1246
1245
1247
def visit_ExceptHeader (self , node : Statement ) -> None : # noqa: N802
1246
- self ._visit_statement (node )
1248
+ self ._analyze_statement_variables (node )
1249
+ self ._analyze_option_token_variables (node )
1247
1250
1248
1251
variable_token = node .get_token (Token .VARIABLE )
1249
1252
@@ -1299,7 +1302,7 @@ def _format_template(self, template: str, arguments: Tuple[str, ...]) -> Tuple[s
1299
1302
return "" .join (temp ), ()
1300
1303
1301
1304
def visit_TemplateArguments (self , node : TemplateArguments ) -> None : # noqa: N802
1302
- self ._visit_statement (node )
1305
+ self ._analyze_statement_variables (node )
1303
1306
1304
1307
template = self ._template or self ._test_template
1305
1308
if template is not None and template .value is not None and template .value .upper () not in ("" , "NONE" ):
@@ -1339,10 +1342,10 @@ def visit_TemplateArguments(self, node: TemplateArguments) -> None: # noqa: N80
1339
1342
self .generic_visit (node )
1340
1343
1341
1344
def visit_DefaultTags (self , node : Statement ) -> None : # noqa: N802
1342
- self ._visit_statement (node , DiagnosticSeverity .HINT )
1345
+ self ._analyze_statement_variables (node , DiagnosticSeverity .HINT )
1343
1346
1344
1347
def visit_ForceTags (self , node : Statement ) -> None : # noqa: N802
1345
- self ._visit_statement (node , DiagnosticSeverity .HINT )
1348
+ self ._analyze_statement_variables (node , DiagnosticSeverity .HINT )
1346
1349
1347
1350
if get_robot_version () >= (6 , 0 ):
1348
1351
tag = node .get_token (Token .FORCE_TAGS )
@@ -1356,7 +1359,7 @@ def visit_ForceTags(self, node: Statement) -> None: # noqa: N802
1356
1359
)
1357
1360
1358
1361
def visit_TestTags (self , node : Statement ) -> None : # noqa: N802
1359
- self ._visit_statement (node , DiagnosticSeverity .HINT )
1362
+ self ._analyze_statement_variables (node , DiagnosticSeverity .HINT )
1360
1363
1361
1364
if get_robot_version () >= (6 , 0 ):
1362
1365
tag = node .get_token (Token .FORCE_TAGS )
@@ -1376,7 +1379,7 @@ def visit_DocumentationOrMetadata(self, node: Statement) -> None: # noqa: N802
1376
1379
self ._visit_settings_statement (node , DiagnosticSeverity .HINT )
1377
1380
1378
1381
def visit_Timeout (self , node : Statement ) -> None : # noqa: N802
1379
- self ._visit_statement (node , DiagnosticSeverity .HINT )
1382
+ self ._analyze_statement_variables (node , DiagnosticSeverity .HINT )
1380
1383
1381
1384
def visit_SingleValue (self , node : Statement ) -> None : # noqa: N802
1382
1385
self ._visit_settings_statement (node , DiagnosticSeverity .HINT )
@@ -1402,7 +1405,7 @@ def visit_Tags(self, node: Statement) -> None: # noqa: N802
1402
1405
)
1403
1406
1404
1407
def visit_SectionHeader (self , node : Statement ) -> None : # noqa: N802
1405
- self ._visit_statement (node )
1408
+ self ._analyze_statement_variables (node )
1406
1409
1407
1410
if get_robot_version () >= (7 , 0 ):
1408
1411
token = node .get_token (* Token .HEADER_TOKENS )
@@ -1425,7 +1428,7 @@ def visit_SectionHeader(self, node: Statement) -> None: # noqa: N802
1425
1428
)
1426
1429
1427
1430
def visit_ReturnSetting (self , node : Statement ) -> None : # noqa: N802
1428
- self ._visit_statement (node )
1431
+ self ._analyze_statement_variables (node )
1429
1432
1430
1433
if get_robot_version () >= (7 , 0 ):
1431
1434
token = node .get_token (Token .RETURN_SETTING )
@@ -1456,7 +1459,7 @@ def visit_VariablesImport(self, node: VariablesImport) -> None: # noqa: N802
1456
1459
return
1457
1460
1458
1461
self ._analyze_token_variables (name_token )
1459
- self ._visit_statement (node )
1462
+ self ._analyze_statement_variables (node )
1460
1463
1461
1464
found = False
1462
1465
entries = self ._namespace .get_import_entries ()
@@ -1485,7 +1488,7 @@ def visit_ResourceImport(self, node: ResourceImport) -> None: # noqa: N802
1485
1488
return
1486
1489
1487
1490
self ._analyze_token_variables (name_token )
1488
- self ._visit_statement (node )
1491
+ self ._analyze_statement_variables (node )
1489
1492
1490
1493
found = False
1491
1494
entries = self ._namespace .get_import_entries ()
@@ -1513,7 +1516,7 @@ def visit_LibraryImport(self, node: LibraryImport) -> None: # noqa: N802
1513
1516
return
1514
1517
1515
1518
self ._analyze_token_variables (name_token )
1516
- self ._visit_statement (node )
1519
+ self ._analyze_statement_variables (node )
1517
1520
1518
1521
found = False
1519
1522
entries = self ._namespace .get_import_entries ()
@@ -1533,8 +1536,11 @@ def visit_LibraryImport(self, node: LibraryImport) -> None: # noqa: N802
1533
1536
break
1534
1537
1535
1538
def visit_WhileHeader (self , node : Statement ) -> None : # noqa: N802
1536
- self ._visit_expression_statement (node )
1539
+ self ._analyze_statement_expression_variables (node )
1540
+
1541
+ self ._analyze_option_token_variables (node )
1537
1542
1543
+ def _analyze_option_token_variables (self , node : Statement ) -> None :
1538
1544
for token in node .get_tokens (Token .OPTION ):
1539
1545
if token .value and "=" in token .value :
1540
1546
name , value = token .value .split ("=" , 1 )
@@ -1543,10 +1549,10 @@ def visit_WhileHeader(self, node: Statement) -> None: # noqa: N802
1543
1549
self ._analyze_token_variables (value_token )
1544
1550
1545
1551
def visit_IfHeader (self , node : Statement ) -> None : # noqa: N802
1546
- self ._visit_expression_statement (node )
1552
+ self ._analyze_statement_expression_variables (node )
1547
1553
1548
1554
def visit_IfElseHeader (self , node : Statement ) -> None : # noqa: N802
1549
- self ._visit_expression_statement (node )
1555
+ self ._analyze_statement_expression_variables (node )
1550
1556
1551
1557
def _find_variable (self , name : str ) -> Optional [VariableDefinition ]:
1552
1558
if name [:2 ] == "%{" and name [- 1 ] == "}" :
0 commit comments