Merge branch 'completion-improvements' into 'main'

Completion improvements

See merge request GNOME/blueprint-compiler!243
This commit is contained in:
James Westman 2025-05-08 09:08:38 +00:00
commit 90b60e4de7
39 changed files with 814 additions and 268 deletions

View file

@ -48,7 +48,7 @@ class ScopeCtx:
return self.node
@cached_property
def objects(self) -> T.Dict[str, Object]:
def objects(self) -> T.Dict[str, AstNode]:
return {
obj.tokens["id"]: obj
for obj in self._iter_recursive(self.node)
@ -58,7 +58,7 @@ class ScopeCtx:
def validate_unique_ids(self) -> None:
from .gtk_list_item_factory import ExtListItemFactory
passed = {}
passed: T.Dict[str, AstNode] = {}
for obj in self._iter_recursive(self.node):
from .gtk_menu import Menu
@ -73,10 +73,16 @@ class ScopeCtx:
raise CompileError(
f"Duplicate object ID '{obj.id}'",
token.range,
references=[
ErrorReference(
passed[obj.tokens["id"]].group.tokens["id"].range,
"previous declaration was here",
)
],
)
passed[obj.id] = obj
def _iter_recursive(self, node: AstNode):
def _iter_recursive(self, node: AstNode) -> T.Generator[AstNode, T.Any, None]:
yield node
for child in node.children:
if child.context[ScopeCtx] is self: