mirror of
https://gitlab.gnome.org/jwestman/blueprint-compiler.git
synced 2025-06-22 23:19:25 -04:00
Merge branch 'completion-improvements' into 'main'
Completion improvements See merge request GNOME/blueprint-compiler!243
This commit is contained in:
commit
90b60e4de7
39 changed files with 814 additions and 268 deletions
|
@ -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:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue