From b9f82774ce3a73b4d37acc41ad5fed96044a004b Mon Sep 17 00:00:00 2001 From: Torben Leth Date: Tue, 20 Jan 2026 01:08:50 +0100 Subject: [PATCH] fix(al): guard against missing position in name cache storage Only store the original name in the cache if we have valid position data. This prevents false cache matches at position (0, 0) when selectionRange is missing from a symbol. Addresses PR #960 review comment. --- .../language_servers/al_language_server.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/solidlsp/language_servers/al_language_server.py b/src/solidlsp/language_servers/al_language_server.py index bb66437c..c2bad1e2 100644 --- a/src/solidlsp/language_servers/al_language_server.py +++ b/src/solidlsp/language_servers/al_language_server.py @@ -1028,13 +1028,16 @@ class ALLanguageServer(SolidLanguageServer): normalized_name = extract_al_display_name(original_name) # Store original name if it was normalized (for hover injection) + # Only store if we have valid position data to avoid false matches at (0, 0) if original_name != normalized_name: - sel_range = symbol.get("selectionRange", {}) - start = sel_range.get("start", {}) - line = start.get("line", 0) - char = start.get("character", 0) - normalized_path = self._normalize_path(relative_file_path) - self._al_original_names[(normalized_path, line, char)] = original_name + sel_range = symbol.get("selectionRange") + if sel_range: + start = sel_range.get("start") + if start and "line" in start and "character" in start: + line = start["line"] + char = start["character"] + normalized_path = self._normalize_path(relative_file_path) + self._al_original_names[(normalized_path, line, char)] = original_name symbol["name"] = normalized_name