Skip to content

Commit ec94a22

Browse files
committed
some refactoring
1 parent 8eb4ed9 commit ec94a22

File tree

4 files changed

+25
-16
lines changed

4 files changed

+25
-16
lines changed

robotcode/language_server/robotframework/diagnostics/analyzer.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,20 @@
3232

3333

3434
class Analyzer(AsyncVisitor):
35-
async def get(self, model: ast.AST, namespace: Namespace) -> List[Diagnostic]:
36-
self._results: List[Diagnostic] = []
35+
def __init__(self, model: ast.AST, namespace: Namespace) -> None:
36+
from robot.parsing.model.statements import TestTemplate, Template
37+
38+
self.model = model
3739
self._namespace = namespace
3840
self.current_testcase_or_keyword_name: Optional[str] = None
3941
self.finder = KeywordFinder(self._namespace)
42+
self.test_template: Optional[TestTemplate] = None
43+
self.template: Optional[Template] = None
44+
45+
async def run(self) -> List[Diagnostic]:
46+
self._results: List[Diagnostic] = []
4047

41-
await self.visit(model)
48+
await self.visit(self.model)
4249
return self._results
4350

4451
async def visit(self, node: ast.AST) -> None:
@@ -372,6 +379,7 @@ async def visit_TestTemplate(self, node: ast.AST) -> None: # noqa: N802
372379
if keyword_token is not None and is_not_variable_token(keyword_token):
373380
await self._analyze_keyword_call(value.value, value, keyword_token, [])
374381

382+
self.test_template = value
375383
await self.generic_visit(node)
376384

377385
async def visit_Template(self, node: ast.AST) -> None: # noqa: N802

robotcode/language_server/robotframework/diagnostics/namespace.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -717,7 +717,7 @@ async def yield_variables(
717717
yielded[matcher] = var
718718
yield matcher, var
719719

720-
async def get_unresolved_variables(
720+
async def get_resolvable_variables(
721721
self, nodes: Optional[List[ast.AST]] = None, position: Optional[Position] = None
722722
) -> Dict[str, Any]:
723723
return {
@@ -811,7 +811,7 @@ async def _import(value: Import) -> Optional[LibraryEntry]:
811811
source = await self.imports_manager.find_file(
812812
value.name,
813813
base_dir,
814-
variables=await self.get_unresolved_variables(),
814+
variables=await self.get_resolvable_variables(),
815815
)
816816

817817
# allready imported
@@ -1071,7 +1071,8 @@ async def _import_lib(library: str) -> Optional[LibraryEntry]:
10711071
)
10721072
return None
10731073

1074-
for e in await asyncio.gather(*(_import_lib(library) for library in DEFAULT_LIBRARIES)):
1074+
for library in DEFAULT_LIBRARIES:
1075+
e = await _import_lib(library)
10751076
if e is not None:
10761077
self._libraries[e.alias or e.name or e.import_name] = e
10771078

@@ -1092,7 +1093,7 @@ async def _get_library_entry(
10921093
args,
10931094
base_dir=base_dir,
10941095
sentinel=None if is_default_library else sentinel,
1095-
variables=await self.get_unresolved_variables(),
1096+
variables=await self.get_resolvable_variables(),
10961097
)
10971098

10981099
return LibraryEntry(name=library_doc.name, import_name=name, library_doc=library_doc, args=args, alias=alias)
@@ -1118,7 +1119,7 @@ async def _get_resource_entry(self, name: str, base_dir: str, sentinel: Any = No
11181119
name,
11191120
base_dir,
11201121
sentinel=sentinel,
1121-
variables=await self.get_unresolved_variables(),
1122+
variables=await self.get_resolvable_variables(),
11221123
)
11231124

11241125
return ResourceEntry(
@@ -1155,7 +1156,7 @@ async def _get_variables_entry(
11551156
args,
11561157
base_dir=base_dir,
11571158
sentinel=sentinel,
1158-
variables=await self.get_unresolved_variables(),
1159+
variables=await self.get_resolvable_variables(),
11591160
)
11601161

11611162
return VariablesEntry(
@@ -1228,7 +1229,7 @@ async def _analyze(self) -> None:
12281229
if not self._analyzed:
12291230
canceled = False
12301231
try:
1231-
result = await Analyzer().get(self.model, self)
1232+
result = await Analyzer(self.model, self).run()
12321233

12331234
self._diagnostics += result
12341235

robotcode/language_server/robotframework/parts/completion.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1150,7 +1150,7 @@ async def complete_import() -> Optional[List[CompletionItem]]:
11501150
list = await imports_manger.complete_library_import(
11511151
first_part if first_part else None,
11521152
str(self.document.uri.to_path().parent),
1153-
await self.namespace.get_unresolved_variables(nodes_at_position, position),
1153+
await self.namespace.get_resolvable_variables(nodes_at_position, position),
11541154
)
11551155
if not list:
11561156
return None
@@ -1388,7 +1388,7 @@ async def complete_ResourceImport( # noqa: N802
13881388
list = await imports_manger.complete_resource_import(
13891389
first_part if first_part else None,
13901390
str(self.document.uri.to_path().parent),
1391-
await self.namespace.get_unresolved_variables(nodes_at_position, position),
1391+
await self.namespace.get_resolvable_variables(nodes_at_position, position),
13921392
)
13931393
if not list:
13941394
return None
@@ -1491,7 +1491,7 @@ async def complete_VariablesImport( # noqa: N802
14911491
list = await imports_manger.complete_variables_import(
14921492
first_part if first_part else None,
14931493
str(self.document.uri.to_path().parent),
1494-
await self.namespace.get_unresolved_variables(nodes_at_position, position),
1494+
await self.namespace.get_resolvable_variables(nodes_at_position, position),
14951495
)
14961496
if not list:
14971497
return None

robotcode/language_server/robotframework/parts/hover.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ async def _hover_default(self, nodes: List[ast.AST], document: TextDocument, pos
119119
await namespace.imports_manager.resolve_variable(
120120
variable.name,
121121
str(document.uri.to_path().parent),
122-
await namespace.get_unresolved_variables(nodes, position),
122+
await namespace.get_resolvable_variables(nodes, position),
123123
False,
124124
)
125125
)
@@ -172,7 +172,7 @@ async def hover_IfHeader( # noqa: N802
172172
value = await namespace.imports_manager.resolve_variable(
173173
variable.name,
174174
str(document.uri.to_path().parent),
175-
await namespace.get_unresolved_variables(nodes, position),
175+
await namespace.get_resolvable_variables(nodes, position),
176176
False,
177177
)
178178
except (asyncio.CancelledError, SystemExit, KeyboardInterrupt):
@@ -224,7 +224,7 @@ async def hover_WhileHeader( # noqa: N802
224224
value = await namespace.imports_manager.resolve_variable(
225225
variable.name,
226226
str(document.uri.to_path().parent),
227-
await namespace.get_unresolved_variables(nodes, position),
227+
await namespace.get_resolvable_variables(nodes, position),
228228
False,
229229
)
230230
except (asyncio.CancelledError, SystemExit, KeyboardInterrupt):

0 commit comments

Comments
 (0)