Skip to content

Commit b91f2ff

Browse files
committed
feat(langserver): added new return type information of keyword from libdoc to documentation hover
1 parent 2678884 commit b91f2ff

File tree

1 file changed

+13
-4
lines changed
  • packages/language_server/src/robotcode/language_server/robotframework/diagnostics

1 file changed

+13
-4
lines changed

packages/language_server/src/robotcode/language_server/robotframework/diagnostics/library_doc.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -442,7 +442,8 @@ class ArgumentSpec:
442442
var_named: Any
443443
embedded: Any
444444
defaults: Any
445-
types: Any
445+
types: Optional[Dict[str, str]] = None
446+
return_type: Optional[str] = None
446447

447448
@staticmethod
448449
def from_robot_argument_spec(spec: Any) -> ArgumentSpec:
@@ -456,7 +457,8 @@ def from_robot_argument_spec(spec: Any) -> ArgumentSpec:
456457
var_named=spec.var_named,
457458
embedded=spec.embedded if get_robot_version() >= (7, 0) else None,
458459
defaults={k: str(v) for k, v in spec.defaults.items()} if spec.defaults else {},
459-
types=None,
460+
types={k: str(v) for k, v in spec.types.items()} if get_robot_version() > (7, 0) and spec.types else None,
461+
return_type=str(spec.return_type) if get_robot_version() > (7, 0) and spec.return_type else None,
460462
)
461463

462464
def resolve(
@@ -489,7 +491,7 @@ def resolve(
489491
self.named_only,
490492
self.var_named,
491493
self.defaults,
492-
self.types,
494+
None,
493495
)
494496
else:
495497
self.__robot_arguments = RobotArgumentSpec(
@@ -502,7 +504,7 @@ def resolve(
502504
self.var_named,
503505
self.embedded,
504506
self.defaults,
505-
self.types,
507+
None,
506508
)
507509
self.__robot_arguments.name = self.name
508510
if validate:
@@ -553,6 +555,7 @@ class KeywordDoc(SourceEntity):
553555
is_registered_run_keyword: bool = field(default=False, compare=False)
554556
args_to_process: Optional[int] = field(default=None, compare=False)
555557
deprecated: bool = field(default=False, compare=False)
558+
return_type: Optional[str] = field(default=None, compare=False)
556559

557560
parent_digest: Optional[str] = field(default=None, init=False, metadata={"nosave": True})
558561
parent: Optional[LibraryDoc] = field(default=None, init=False, metadata={"nosave": True})
@@ -719,6 +722,11 @@ def escape_pipe(s: str) -> str:
719722
f"| {'=' if a.default_value is not None else ''} "
720723
f"| {f'`{a.default_value!s}`' if a.default_value else ''} |"
721724
)
725+
if self.return_type:
726+
if result:
727+
result += "\n\n"
728+
729+
result += f"**Return Type**: `{self.return_type}`\n"
722730

723731
if self.tags:
724732
if result:
@@ -1801,6 +1809,7 @@ def get_test_library(
18011809
arguments_spec=ArgumentSpec.from_robot_argument_spec(kw[1].arguments)
18021810
if not kw[1].is_error_handler
18031811
else None,
1812+
return_type=str(kw[1].arguments.return_type) if get_robot_version() >= (7, 0) else None,
18041813
)
18051814
for kw in keyword_docs
18061815
],

0 commit comments

Comments
 (0)