Skip to content

Commit 16804ed

Browse files
committed
support for inline IF's assignments
1 parent 89c8a3f commit 16804ed

File tree

1 file changed

+35
-0
lines changed
  • robotcode/language_server/robotframework/diagnostics

1 file changed

+35
-0
lines changed

robotcode/language_server/robotframework/diagnostics/namespace.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,41 @@ async def visit_KeywordCall(self, node: ast.AST) -> None: # noqa: N802
286286
except VariableError:
287287
pass
288288

289+
async def visit_InlineIfHeader(self, node: ast.AST) -> None: # noqa: N802
290+
from robot.errors import VariableError
291+
from robot.parsing.lexer.tokens import Token as RobotToken
292+
from robot.parsing.model.statements import InlineIfHeader
293+
294+
# TODO analyse "Set Local/Global/Suite Variable"
295+
296+
n = cast(InlineIfHeader, node)
297+
298+
for assign_token in n.get_tokens(RobotToken.ASSIGN):
299+
variable_token = self.get_variable_token(assign_token)
300+
301+
try:
302+
if variable_token is not None:
303+
if (
304+
self.position is not None
305+
and self.position in range_from_node(n)
306+
and self.position > range_from_token(variable_token).end
307+
):
308+
continue
309+
310+
if variable_token.value not in self._results:
311+
self._results[variable_token.value] = LocalVariableDefinition(
312+
name=variable_token.value,
313+
name_token=strip_variable_token(variable_token),
314+
line_no=n.lineno,
315+
col_offset=n.col_offset,
316+
end_line_no=n.lineno,
317+
end_col_offset=n.end_col_offset,
318+
source=self.source,
319+
)
320+
321+
except VariableError:
322+
pass
323+
289324
async def visit_ForHeader(self, node: ast.AST) -> None: # noqa: N802
290325
from robot.parsing.lexer.tokens import Token as RobotToken
291326
from robot.parsing.model.statements import ForHeader

0 commit comments

Comments
 (0)