Revert "Add end_line to serena's Symbol representation"

This reverts commit 6c121836bc.
This commit is contained in:
Dominik Jain committed 2025-05-29 14:35:51 +02:00
1 parent f4f6e8fbbe
commit ba7ec5f0c2
1 file changed
+5 -22
+5 -22
View File
@@ -20,8 +20,7 @@ log = logging.getLogger(__name__)
@dataclass
class SymbolLocation:
"""
Represents the location of a symbol, including the line where the identifier
is defined and the end line of the symbol's body
Represents the (start) location of a symbol identifier
"""
relative_path: str | None
@@ -38,16 +37,6 @@ class SymbolLocation:
the column number in which the symbol identifier is defined (if the symbol is a function, class, etc.);
may be None for some types of symbols (e.g. SymbolKind.File)
"""
end_line: int | None = None
"""
the line in which the symbol's body ends. For methods that search based on SymbolLocation,
the end line is not needed, as it is unused by the language server in the search.
However, the end_line will typically be included in the results of search methods,
and thus be provided to the user in the response to such requests.
This is useful for the LLMs, especially the less intelligent ones, as they often fail
to perform symbolic operations and when falling back to line-editing tools, will just make up
an end line.
"""
def __post_init__(self) -> None:
if self.relative_path is not None:
@@ -129,7 +118,10 @@ class Symbol(ToStringMixin):
@property
def location(self) -> SymbolLocation:
return SymbolLocation(relative_path=self.relative_path, line=self.line, column=self.column, end_line=self.end_line)
"""
:return: the start location of the actual symbol identifier
"""
return SymbolLocation(relative_path=self.relative_path, line=self.line, column=self.column)
@property
def body_start_position(self) -> Position | None:
@@ -155,21 +147,12 @@ class Symbol(ToStringMixin):
@property
def line(self) -> int | None:
"""The line in which the symbol identifier is defined (start line)."""
if "selectionRange" in self.symbol_root:
return self.symbol_root["selectionRange"]["start"]["line"]
else:
# line is expected to be undefined for some types of symbols (e.g. SymbolKind.File)
return None
@property
def end_line(self) -> int | None:
"""The end line of the symbol body, also contained in the `body_end_position`."""
body_end_position = self.body_end_position
if body_end_position is not None:
return body_end_position["line"]
return None
@property
def column(self) -> int | None:
if "selectionRange" in self.symbol_root: