Skip to content

Commit b1f0f28

Browse files
committed
perf(analyzer): optimized analysing keyword calls
1 parent 96fbe90 commit b1f0f28

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

packages/robot/src/robotcode/robot/diagnostics/keyword_finder.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ def __init__(self, namespace: "Namespace", library_doc: LibraryDoc) -> None:
4343
self.self_library_doc = library_doc
4444

4545
self.diagnostics: List[DiagnosticsEntry] = []
46+
self.result_bdd_prefix: Optional[str] = None
47+
4648
self.multiple_keywords_result: Optional[List[KeywordDoc]] = None
4749
self._cache: Dict[
4850
Tuple[Optional[str], bool],
@@ -61,6 +63,7 @@ def __init__(self, namespace: "Namespace", library_doc: LibraryDoc) -> None:
6163
def reset_diagnostics(self) -> None:
6264
self.diagnostics = []
6365
self.multiple_keywords_result = None
66+
self.result_bdd_prefix = None
6467

6568
def find_keyword(
6669
self,
@@ -470,7 +473,11 @@ def bdd_prefix_regexp(self) -> "re.Pattern[str]":
470473
def _get_bdd_style_keyword(self, name: str) -> Optional[KeywordDoc]:
471474
match = self.bdd_prefix_regexp.match(name)
472475
if match:
473-
return self._find_keyword(
476+
result = self._find_keyword(
474477
name[match.end() :], handle_bdd_style=False if get_robot_version() >= (7, 0) else True
475478
)
479+
if result:
480+
self.result_bdd_prefix = str(match)
481+
482+
return result
476483
return None

packages/robot/src/robotcode/robot/diagnostics/namespace_analyzer.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -552,13 +552,11 @@ def _analyze_keyword_call(
552552
if not allow_variables and not is_not_variable_token(keyword_token):
553553
return None
554554

555-
result = self._finder.find_keyword(keyword, raise_keyword_error=False, handle_bdd_style=False)
555+
result = self._finder.find_keyword(keyword, raise_keyword_error=False)
556556

557-
if result is None:
557+
if result is not None and self._finder.result_bdd_prefix:
558558
keyword_token = ModelHelper.strip_bdd_prefix(self._namespace, keyword_token)
559559

560-
result = self._finder.find_keyword(keyword, raise_keyword_error=False)
561-
562560
kw_range = range_from_token(keyword_token)
563561

564562
if keyword:

0 commit comments

Comments
 (0)