Skip to content

Commit bd88503

Browse files
committed
extend arguments parsing for arguments with default value
1 parent e945895 commit bd88503

File tree

3 files changed

+23
-5
lines changed

3 files changed

+23
-5
lines changed

robotcode/language_server/robotframework/diagnostics/namespace.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
Tuple,
2121
cast,
2222
)
23+
import itertools
2324

2425
from ....utils.async_itertools import async_chain
2526
from ....utils.logging import LoggingDescriptor
@@ -223,13 +224,26 @@ async def visit_Arguments(self, node: ast.AST) -> None: # noqa: N802
223224
from robot.errors import VariableError
224225
from robot.parsing.lexer.tokens import Token as RobotToken
225226
from robot.parsing.model.statements import Arguments
226-
from robot.variables.search import is_variable
227227

228228
n = cast(Arguments, node)
229229
arguments = n.get_tokens(RobotToken.ARGUMENT)
230-
for argument in (cast(RobotToken, e) for e in arguments):
230+
for argument1 in (cast(RobotToken, e) for e in arguments):
231231
try:
232-
if is_variable(argument.value):
232+
argument = None
233+
try:
234+
argument = next(
235+
(
236+
v
237+
for v in itertools.dropwhile(
238+
lambda t: t.type in RobotToken.NON_DATA_TOKENS, argument1.tokenize_variables()
239+
)
240+
if v.type == RobotToken.VARIABLE
241+
),
242+
None,
243+
)
244+
except VariableError:
245+
pass
246+
if argument is not None:
233247
self._results.append(
234248
ArgumentDefinition(
235249
name=argument.value,

robotcode/language_server/robotframework/parts/goto.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ async def collect(
8787
async def _definition_default(
8888
self, nodes: List[ast.AST], document: TextDocument, position: Position
8989
) -> Union[Location, List[Location], List[LocationLink], None]:
90+
from robot.api.parsing import Token as RobotToken
91+
9092
namespace = await self.parent.documents_cache.get_namespace(document)
9193
if namespace is None:
9294
return None
@@ -103,7 +105,7 @@ async def _definition_default(
103105

104106
for t in tokens:
105107
try:
106-
for sub_token in t.tokenize_variables():
108+
for sub_token in filter(lambda s: s.type == RobotToken.VARIABLE, t.tokenize_variables()):
107109
range = range_from_token(sub_token)
108110

109111
if position.is_in_range(range):

robotcode/language_server/robotframework/parts/hover.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ async def collect(self, sender: Any, document: TextDocument, position: Position)
7676
return await self._hover_default(result_nodes, document, position)
7777

7878
async def _hover_default(self, nodes: List[ast.AST], document: TextDocument, position: Position) -> Optional[Hover]:
79+
from robot.api.parsing import Token as RobotToken
80+
7981
namespace = await self.parent.documents_cache.get_namespace(document)
8082
if namespace is None:
8183
return None
@@ -91,7 +93,7 @@ async def _hover_default(self, nodes: List[ast.AST], document: TextDocument, pos
9193

9294
for t in tokens:
9395
try:
94-
for sub_token in t.tokenize_variables():
96+
for sub_token in filter(lambda s: s.type == RobotToken.VARIABLE, t.tokenize_variables()):
9597
range = range_from_token(sub_token)
9698

9799
if position.is_in_range(range):

0 commit comments

Comments
 (0)