From d6f4b88d35eb6a897eb40741a92f639cecbd0acc Mon Sep 17 00:00:00 2001 From: James Westman Date: Wed, 25 Dec 2024 10:31:35 -0600 Subject: [PATCH] lsp: Fix crash on incomplete detailed signal --- blueprintcompiler/language/gobject_signal.py | 3 ++- tests/sample_errors/incomplete_signal.blp | 5 +++++ tests/sample_errors/incomplete_signal.err | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 tests/sample_errors/incomplete_signal.blp create mode 100644 tests/sample_errors/incomplete_signal.err diff --git a/blueprintcompiler/language/gobject_signal.py b/blueprintcompiler/language/gobject_signal.py index b052e3c..9c27b97 100644 --- a/blueprintcompiler/language/gobject_signal.py +++ b/blueprintcompiler/language/gobject_signal.py @@ -143,12 +143,13 @@ class Signal(AstNode): @property def document_symbol(self) -> DocumentSymbol: + detail = self.ranges["detail_start", "detail_end"] return DocumentSymbol( self.full_name, SymbolKind.Event, self.range, self.group.tokens["name"].range, - self.ranges["detail_start", "detail_end"].text, + detail.text if detail is not None else None, ) def get_reference(self, idx: int) -> T.Optional[LocationLink]: diff --git a/tests/sample_errors/incomplete_signal.blp b/tests/sample_errors/incomplete_signal.blp new file mode 100644 index 0000000..4ec693d --- /dev/null +++ b/tests/sample_errors/incomplete_signal.blp @@ -0,0 +1,5 @@ +using Gtk 4.0; + +Label { + notify:: +} diff --git a/tests/sample_errors/incomplete_signal.err b/tests/sample_errors/incomplete_signal.err new file mode 100644 index 0000000..901ef3b --- /dev/null +++ b/tests/sample_errors/incomplete_signal.err @@ -0,0 +1,2 @@ +5,1,0,Expected a signal detail name +4,9,3,Unexpected tokens \ No newline at end of file