@@ -294,7 +294,7 @@ def _visit_Variable(self, node: Variable) -> None: # noqa: N802
294294 if get_robot_version () >= (7 , 0 ):
295295
296296 def visit_Var (self , node : Statement ) -> None : # noqa: N802
297- self ._visit_statement (node )
297+ self ._analyze_statement_variables (node )
298298
299299 variable = node .get_token (Token .VARIABLE )
300300 if variable is None :
@@ -348,13 +348,15 @@ def visit_Var(self, node: Statement) -> None: # noqa: N802
348348 pass
349349
350350 def visit_Statement (self , node : Statement ) -> None : # noqa: N802
351- self ._visit_statement (node )
351+ self ._analyze_statement_variables (node )
352352
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 :
354356 for token in node .get_tokens (Token .ARGUMENT ):
355357 self ._analyze_token_variables (token , severity )
356358
357- def _visit_expression_statement (
359+ def _analyze_statement_expression_variables (
358360 self , node : Statement , severity : DiagnosticSeverity = DiagnosticSeverity .ERROR
359361 ) -> None :
360362
@@ -367,7 +369,7 @@ def _visit_settings_statement(
367369 ) -> None :
368370 self ._in_setting = True
369371 try :
370- self ._visit_statement (node , severity )
372+ self ._analyze_statement_variables (node , severity )
371373 finally :
372374 self ._in_setting = False
373375
@@ -921,7 +923,7 @@ def visit_Fixture(self, node: Fixture) -> None: # noqa: N802
921923
922924 if keyword_token is not None and keyword_token .value and keyword_token .value .upper () not in ("" , "NONE" ):
923925 self ._analyze_token_variables (keyword_token )
924- self ._visit_statement (node )
926+ self ._analyze_statement_variables (node )
925927
926928 self ._analyze_keyword_call (
927929 node ,
@@ -977,7 +979,7 @@ def visit_KeywordCall(self, node: KeywordCall) -> None: # noqa: N802
977979 return
978980
979981 self ._analyze_token_variables (keyword_token )
980- self ._visit_statement (node )
982+ self ._analyze_statement_variables (node )
981983
982984 self ._analyze_keyword_call (
983985 node ,
@@ -1202,12 +1204,12 @@ def _analyze_assign_statement(self, node: Statement) -> None:
12021204 pass
12031205
12041206 def visit_InlineIfHeader (self , node : Statement ) -> None : # noqa: N802
1205- self ._visit_expression_statement (node )
1207+ self ._analyze_statement_expression_variables (node )
12061208
12071209 self ._analyze_assign_statement (node )
12081210
12091211 def visit_ForHeader (self , node : Statement ) -> None : # noqa: N802
1210- self ._visit_statement (node )
1212+ self ._analyze_statement_variables (node )
12111213
12121214 variables = node .get_tokens (Token .VARIABLE )
12131215 for variable in variables :
@@ -1243,7 +1245,8 @@ def visit_ForHeader(self, node: Statement) -> None: # noqa: N802
12431245 )
12441246
12451247 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 )
12471250
12481251 variable_token = node .get_token (Token .VARIABLE )
12491252
@@ -1299,7 +1302,7 @@ def _format_template(self, template: str, arguments: Tuple[str, ...]) -> Tuple[s
12991302 return "" .join (temp ), ()
13001303
13011304 def visit_TemplateArguments (self , node : TemplateArguments ) -> None : # noqa: N802
1302- self ._visit_statement (node )
1305+ self ._analyze_statement_variables (node )
13031306
13041307 template = self ._template or self ._test_template
13051308 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
13391342 self .generic_visit (node )
13401343
13411344 def visit_DefaultTags (self , node : Statement ) -> None : # noqa: N802
1342- self ._visit_statement (node , DiagnosticSeverity .HINT )
1345+ self ._analyze_statement_variables (node , DiagnosticSeverity .HINT )
13431346
13441347 def visit_ForceTags (self , node : Statement ) -> None : # noqa: N802
1345- self ._visit_statement (node , DiagnosticSeverity .HINT )
1348+ self ._analyze_statement_variables (node , DiagnosticSeverity .HINT )
13461349
13471350 if get_robot_version () >= (6 , 0 ):
13481351 tag = node .get_token (Token .FORCE_TAGS )
@@ -1356,7 +1359,7 @@ def visit_ForceTags(self, node: Statement) -> None: # noqa: N802
13561359 )
13571360
13581361 def visit_TestTags (self , node : Statement ) -> None : # noqa: N802
1359- self ._visit_statement (node , DiagnosticSeverity .HINT )
1362+ self ._analyze_statement_variables (node , DiagnosticSeverity .HINT )
13601363
13611364 if get_robot_version () >= (6 , 0 ):
13621365 tag = node .get_token (Token .FORCE_TAGS )
@@ -1376,7 +1379,7 @@ def visit_DocumentationOrMetadata(self, node: Statement) -> None: # noqa: N802
13761379 self ._visit_settings_statement (node , DiagnosticSeverity .HINT )
13771380
13781381 def visit_Timeout (self , node : Statement ) -> None : # noqa: N802
1379- self ._visit_statement (node , DiagnosticSeverity .HINT )
1382+ self ._analyze_statement_variables (node , DiagnosticSeverity .HINT )
13801383
13811384 def visit_SingleValue (self , node : Statement ) -> None : # noqa: N802
13821385 self ._visit_settings_statement (node , DiagnosticSeverity .HINT )
@@ -1402,7 +1405,7 @@ def visit_Tags(self, node: Statement) -> None: # noqa: N802
14021405 )
14031406
14041407 def visit_SectionHeader (self , node : Statement ) -> None : # noqa: N802
1405- self ._visit_statement (node )
1408+ self ._analyze_statement_variables (node )
14061409
14071410 if get_robot_version () >= (7 , 0 ):
14081411 token = node .get_token (* Token .HEADER_TOKENS )
@@ -1425,7 +1428,7 @@ def visit_SectionHeader(self, node: Statement) -> None: # noqa: N802
14251428 )
14261429
14271430 def visit_ReturnSetting (self , node : Statement ) -> None : # noqa: N802
1428- self ._visit_statement (node )
1431+ self ._analyze_statement_variables (node )
14291432
14301433 if get_robot_version () >= (7 , 0 ):
14311434 token = node .get_token (Token .RETURN_SETTING )
@@ -1456,7 +1459,7 @@ def visit_VariablesImport(self, node: VariablesImport) -> None: # noqa: N802
14561459 return
14571460
14581461 self ._analyze_token_variables (name_token )
1459- self ._visit_statement (node )
1462+ self ._analyze_statement_variables (node )
14601463
14611464 found = False
14621465 entries = self ._namespace .get_import_entries ()
@@ -1485,7 +1488,7 @@ def visit_ResourceImport(self, node: ResourceImport) -> None: # noqa: N802
14851488 return
14861489
14871490 self ._analyze_token_variables (name_token )
1488- self ._visit_statement (node )
1491+ self ._analyze_statement_variables (node )
14891492
14901493 found = False
14911494 entries = self ._namespace .get_import_entries ()
@@ -1513,7 +1516,7 @@ def visit_LibraryImport(self, node: LibraryImport) -> None: # noqa: N802
15131516 return
15141517
15151518 self ._analyze_token_variables (name_token )
1516- self ._visit_statement (node )
1519+ self ._analyze_statement_variables (node )
15171520
15181521 found = False
15191522 entries = self ._namespace .get_import_entries ()
@@ -1533,8 +1536,11 @@ def visit_LibraryImport(self, node: LibraryImport) -> None: # noqa: N802
15331536 break
15341537
15351538 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 )
15371542
1543+ def _analyze_option_token_variables (self , node : Statement ) -> None :
15381544 for token in node .get_tokens (Token .OPTION ):
15391545 if token .value and "=" in token .value :
15401546 name , value = token .value .split ("=" , 1 )
@@ -1543,10 +1549,10 @@ def visit_WhileHeader(self, node: Statement) -> None: # noqa: N802
15431549 self ._analyze_token_variables (value_token )
15441550
15451551 def visit_IfHeader (self , node : Statement ) -> None : # noqa: N802
1546- self ._visit_expression_statement (node )
1552+ self ._analyze_statement_expression_variables (node )
15471553
15481554 def visit_IfElseHeader (self , node : Statement ) -> None : # noqa: N802
1549- self ._visit_expression_statement (node )
1555+ self ._analyze_statement_expression_variables (node )
15501556
15511557 def _find_variable (self , name : str ) -> Optional [VariableDefinition ]:
15521558 if name [:2 ] == "%{" and name [- 1 ] == "}" :
0 commit comments