Skip to content

Commit d99186b

Browse files
committed
Correct handling of argument definitions wich contains a default value from an allready defined argument
1 parent f575508 commit d99186b

File tree

215 files changed

+6773
-562
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

215 files changed

+6773
-562
lines changed

CHANGELOG.md

+418-408
Large diffs are not rendered by default.

robotcode/language_server/robotframework/diagnostics/namespace.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -219,8 +219,13 @@ async def visit_Arguments(self, node: ast.AST) -> None: # noqa: N802
219219
argument = self.get_variable_token(argument_token)
220220

221221
if argument is not None:
222-
if self.in_args and self.position is not None and self.position > range_from_token(argument).end:
223-
break
222+
if (
223+
self.in_args
224+
and self.position is not None
225+
and self.position in range_from_token(argument_token)
226+
and self.position > range_from_token(argument).end
227+
):
228+
continue
224229

225230
self._results[argument.value] = ArgumentDefinition(
226231
name=argument.value,

tests/robotcode/language_server/robotframework/parts/data/tests/document_highlight.robot

+31
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,34 @@ forth
5757
${result}= lib_var.A Library Keyword
5858
# ^^^^^^^^^ Keyword assignment with equals sign
5959
Should Be Equal ${result} ${LIB_ARG}
60+
61+
62+
*** Keywords ***
63+
a keyword with params
64+
[Arguments] ${A VAR}=${A VAR}
65+
# ^^^^^ another argument
66+
# ^^^^^ a default value
67+
Log ${tt}
68+
# ^^ argument usage
69+
Log ${A VAR}
70+
# ^^^^^ argument usage
71+
72+
another keyword with params
73+
[Arguments] ${tt} ${A VAR}=${A VAR}
74+
# ^^ an argument
75+
# ^^^^^ another argument
76+
# ^^^^^ a default value
77+
Log ${tt}
78+
# ^^ argument usage
79+
Log ${A VAR}
80+
# ^^^^^ argument usage
81+
82+
again a keyword with params
83+
[Arguments] ${a} ${b}=${a}
84+
# ^ an argument
85+
# ^ another argument
86+
# ^ argument usage in argument
87+
Log ${a}
88+
# ^ argument usage
89+
Log ${b}
90+
# ^ argument usage

tests/robotcode/language_server/robotframework/parts/data/tests/extras/test.robot

-17
This file was deleted.

tests/robotcode/language_server/robotframework/parts/data/tests/goto.robot

+42-1
Original file line numberDiff line numberDiff line change
@@ -96,4 +96,45 @@ a templated Test
9696
*** Keywords ***
9797
a simple keyword
9898
#^^^^^^^^^^^^^^^ a simple keyword
99-
Log hello
99+
Log hello
100+
101+
102+
a keyword with params
103+
[Arguments] ${A VAR}=${A VAR}
104+
# ^^^^^ another argument
105+
# ^^^^^ a default value
106+
Log ${tt}
107+
# ^^ argument usage
108+
Log ${A VAR}
109+
# ^^^^^ argument usage
110+
111+
another keyword with params
112+
[Arguments] ${tt} ${A VAR}=${A VAR}
113+
# ^^ an argument
114+
# ^^^^^ another argument
115+
# ^^^^^ a default value
116+
Log ${tt}
117+
# ^^ argument usage
118+
Log ${A VAR}
119+
# ^^^^^ argument usage
120+
121+
just another keyword with params
122+
[Arguments] ${tt} ${A VAR}=${tt} ${tt}=${A VAR}
123+
# ^^ an argument
124+
# ^^^^^ another argument
125+
# ^^^^^ a default value
126+
Log ${tt}
127+
# ^^ argument usage
128+
Log ${A VAR}
129+
# ^^^^^ argument usage
130+
131+
132+
again a keyword with params
133+
[Arguments] ${a} ${b}=${a}
134+
# ^ an argument
135+
# ^ another argument
136+
# ^ argument usage in argument
137+
Log ${a}
138+
# ^ argument usage
139+
Log ${b}
140+
# ^ argument usage

tests/robotcode/language_server/robotframework/parts/data/tests/hover.robot

+29
Original file line numberDiff line numberDiff line change
@@ -211,3 +211,32 @@ a simple keyword
211211
sleep a while
212212
S l e e p 1s
213213
# ^^^^^^^^^ simple keyword with extra spaces and parameter
214+
215+
a keyword with params
216+
[Arguments] ${A VAR}=${A VAR}
217+
# ^^^^^ another argument
218+
# ^^^^^ a default value
219+
Log ${tt}
220+
# ^^ argument usage
221+
Log ${A VAR}
222+
# ^^^^^ argument usage
223+
224+
another keyword with params
225+
[Arguments] ${tt} ${A VAR}=${A VAR}
226+
# ^^ an argument
227+
# ^^^^^ another argument
228+
# ^^^^^ a default value
229+
Log ${tt}
230+
# ^^ argument usage
231+
Log ${A VAR}
232+
# ^^^^^ argument usage
233+
234+
again a keyword with params
235+
[Arguments] ${a} ${b}=${a}
236+
# ^ an argument
237+
# ^ another argument
238+
# ^ argument usage in argument
239+
Log ${a}
240+
# ^ argument usage
241+
Log ${b}
242+
# ^ argument usage

tests/robotcode/language_server/robotframework/parts/data/tests/references.robot

+35-1
Original file line numberDiff line numberDiff line change
@@ -101,17 +101,51 @@ do something
101101
Log done ${type}
102102

103103
add ${number:[0-9]+} coins to ${thing}
104+
#^^ Embedded keyword
104105
Log added ${number} coins to ${thing}
105106

106107
add ${what:[a-zA-Z]+} to ${thing}
108+
#^^ Embedded keyword
107109
Log this is duplicated
108110
Log added ${what} to ${thing}
109111

110112
add ${what:[a-zA-Z]+} to ${thing}
113+
#^^ Embedded keyword
111114
Log added ${what} coins to ${thing}
112115

113116
add ${what:[a-zA-Z ]+} to ${thing}
117+
#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Embedded keyword
114118
Log added ${what} coins to ${thing}
115119

116120
do add ${bananas} and to my bag
117-
Log ${bananas}
121+
#^^ Embedded keyword
122+
Log ${bananas}
123+
124+
a keyword with params
125+
[Arguments] ${A VAR}=${A VAR}
126+
# ^^^^^ another argument
127+
# ^^^^^ a default value
128+
Log ${tt}
129+
# ^^ argument usage
130+
Log ${A VAR}
131+
# ^^^^^ argument usage
132+
133+
another keyword with params
134+
[Arguments] ${tt} ${A VAR}=${A VAR}
135+
# ^^ an argument
136+
# ^^^^^ another argument
137+
# ^^^^^ a default value
138+
Log ${tt}
139+
# ^^ argument usage
140+
Log ${A VAR}
141+
# ^^^^^ argument usage
142+
143+
again a keyword with params
144+
[Arguments] ${a} ${b}=${a}
145+
# ^ an argument
146+
# ^ another argument
147+
# ^ argument usage in argument
148+
Log ${a}
149+
# ^ argument usage
150+
Log ${b}
151+
# ^ argument usage

tests/robotcode/language_server/robotframework/parts/test_document_highlight/test_document_highlight_robot_018_002_simple_variable_.yml

+18
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,21 @@ result:
5757
start:
5858
character: 35
5959
line: 34
60+
- !DocumentHighlight
61+
kind: !DocumentHighlightKind 'TEXT'
62+
range:
63+
end:
64+
character: 35
65+
line: 63
66+
start:
67+
character: 30
68+
line: 63
69+
- !DocumentHighlight
70+
kind: !DocumentHighlightKind 'TEXT'
71+
range:
72+
end:
73+
character: 44
74+
line: 72
75+
start:
76+
character: 39
77+
line: 72

tests/robotcode/language_server/robotframework/parts/test_document_highlight/test_document_highlight_robot_018_004_simple_variable_.yml

+18
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,21 @@ result:
5757
start:
5858
character: 35
5959
line: 34
60+
- !DocumentHighlight
61+
kind: !DocumentHighlightKind 'TEXT'
62+
range:
63+
end:
64+
character: 35
65+
line: 63
66+
start:
67+
character: 30
68+
line: 63
69+
- !DocumentHighlight
70+
kind: !DocumentHighlightKind 'TEXT'
71+
range:
72+
end:
73+
character: 44
74+
line: 72
75+
start:
76+
character: 39
77+
line: 72

tests/robotcode/language_server/robotframework/parts/test_document_highlight/test_document_highlight_robot_018_006_simple_variable_.yml

+18
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,21 @@ result:
5757
start:
5858
character: 35
5959
line: 34
60+
- !DocumentHighlight
61+
kind: !DocumentHighlightKind 'TEXT'
62+
range:
63+
end:
64+
character: 35
65+
line: 63
66+
start:
67+
character: 30
68+
line: 63
69+
- !DocumentHighlight
70+
kind: !DocumentHighlightKind 'TEXT'
71+
range:
72+
end:
73+
character: 44
74+
line: 72
75+
start:
76+
character: 39
77+
line: 72

tests/robotcode/language_server/robotframework/parts/test_document_highlight/test_document_highlight_robot_030_004_simple_keyword_call_.yml

+54
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,57 @@ result:
2121
start:
2222
character: 4
2323
line: 37
24+
- !DocumentHighlight
25+
kind: !DocumentHighlightKind 'TEXT'
26+
range:
27+
end:
28+
character: 7
29+
line: 66
30+
start:
31+
character: 4
32+
line: 66
33+
- !DocumentHighlight
34+
kind: !DocumentHighlightKind 'TEXT'
35+
range:
36+
end:
37+
character: 7
38+
line: 68
39+
start:
40+
character: 4
41+
line: 68
42+
- !DocumentHighlight
43+
kind: !DocumentHighlightKind 'TEXT'
44+
range:
45+
end:
46+
character: 7
47+
line: 76
48+
start:
49+
character: 4
50+
line: 76
51+
- !DocumentHighlight
52+
kind: !DocumentHighlightKind 'TEXT'
53+
range:
54+
end:
55+
character: 7
56+
line: 78
57+
start:
58+
character: 4
59+
line: 78
60+
- !DocumentHighlight
61+
kind: !DocumentHighlightKind 'TEXT'
62+
range:
63+
end:
64+
character: 7
65+
line: 86
66+
start:
67+
character: 4
68+
line: 86
69+
- !DocumentHighlight
70+
kind: !DocumentHighlightKind 'TEXT'
71+
range:
72+
end:
73+
character: 7
74+
line: 88
75+
start:
76+
character: 4
77+
line: 88

tests/robotcode/language_server/robotframework/parts/test_document_highlight/test_document_highlight_robot_030_005_simple_keyword_call_.yml

+54
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,57 @@ result:
2121
start:
2222
character: 4
2323
line: 37
24+
- !DocumentHighlight
25+
kind: !DocumentHighlightKind 'TEXT'
26+
range:
27+
end:
28+
character: 7
29+
line: 66
30+
start:
31+
character: 4
32+
line: 66
33+
- !DocumentHighlight
34+
kind: !DocumentHighlightKind 'TEXT'
35+
range:
36+
end:
37+
character: 7
38+
line: 68
39+
start:
40+
character: 4
41+
line: 68
42+
- !DocumentHighlight
43+
kind: !DocumentHighlightKind 'TEXT'
44+
range:
45+
end:
46+
character: 7
47+
line: 76
48+
start:
49+
character: 4
50+
line: 76
51+
- !DocumentHighlight
52+
kind: !DocumentHighlightKind 'TEXT'
53+
range:
54+
end:
55+
character: 7
56+
line: 78
57+
start:
58+
character: 4
59+
line: 78
60+
- !DocumentHighlight
61+
kind: !DocumentHighlightKind 'TEXT'
62+
range:
63+
end:
64+
character: 7
65+
line: 86
66+
start:
67+
character: 4
68+
line: 86
69+
- !DocumentHighlight
70+
kind: !DocumentHighlightKind 'TEXT'
71+
range:
72+
end:
73+
character: 7
74+
line: 88
75+
start:
76+
character: 4
77+
line: 88

0 commit comments

Comments
 (0)