diff --git a/blueprintcompiler/language/__init__.py b/blueprintcompiler/language/__init__.py index 1b27040..ce247c3 100644 --- a/blueprintcompiler/language/__init__.py +++ b/blueprintcompiler/language/__init__.py @@ -22,11 +22,6 @@ from .values import TypeValue, IdentValue, TranslatedStringValue, FlagsValue, Qu from .common import * -OBJECT_HOOKS.children = [ - menu, - Object, -] - OBJECT_CONTENT_HOOKS.children = [ Signal, Property, diff --git a/blueprintcompiler/language/common.py b/blueprintcompiler/language/common.py index deeb5fc..108c43a 100644 --- a/blueprintcompiler/language/common.py +++ b/blueprintcompiler/language/common.py @@ -30,6 +30,5 @@ from ..parse_tree import * from ..xml_emitter import XmlEmitter -OBJECT_HOOKS = AnyOf() OBJECT_CONTENT_HOOKS = AnyOf() VALUE_HOOKS = AnyOf() diff --git a/blueprintcompiler/language/gobject_property.py b/blueprintcompiler/language/gobject_property.py index f0a2ef4..e5d753b 100644 --- a/blueprintcompiler/language/gobject_property.py +++ b/blueprintcompiler/language/gobject_property.py @@ -53,7 +53,7 @@ class Property(AstNode): UseIdent("name"), ":", AnyOf( - OBJECT_HOOKS, + Object, VALUE_HOOKS, ).expected("a value"), ), diff --git a/blueprintcompiler/language/gtk_menu.py b/blueprintcompiler/language/gtk_menu.py index b63233c..2c4131a 100644 --- a/blueprintcompiler/language/gtk_menu.py +++ b/blueprintcompiler/language/gtk_menu.py @@ -17,10 +17,10 @@ # # SPDX-License-Identifier: LGPL-3.0-or-later +import typing as T from .attributes import BaseAttribute from .gobject_object import Object, ObjectContent -from .ui import UI from .common import * @@ -128,7 +128,7 @@ menu_contents.children = [ ), "}"), ] -menu = Group( +menu: Group = Group( Menu, [ "menu", @@ -138,6 +138,7 @@ menu = Group( ], ) +from .ui import UI @completer( applies_in=[UI], diff --git a/blueprintcompiler/language/ui.py b/blueprintcompiler/language/ui.py index 9123bf8..c1adbde 100644 --- a/blueprintcompiler/language/ui.py +++ b/blueprintcompiler/language/ui.py @@ -21,6 +21,8 @@ from .. import gir from .imports import GtkDirective, Import from .gtkbuilder_template import Template +from .gobject_object import Object +from .gtk_menu import menu from .common import * @@ -32,7 +34,8 @@ class UI(AstNode): ZeroOrMore(Import), Until(AnyOf( Template, - OBJECT_HOOKS, + menu, + Object, ), Eof()), ] diff --git a/blueprintcompiler/parser.py b/blueprintcompiler/parser.py index 7c62ae6..739a165 100644 --- a/blueprintcompiler/parser.py +++ b/blueprintcompiler/parser.py @@ -21,7 +21,7 @@ from .errors import MultipleErrors, PrintableError from .parse_tree import * from .tokenizer import TokenType -from .language import OBJECT_HOOKS, OBJECT_CONTENT_HOOKS, VALUE_HOOKS, Template, UI +from .language import OBJECT_CONTENT_HOOKS, VALUE_HOOKS, Template, UI def parse(tokens) -> T.Tuple[UI, T.Optional[MultipleErrors], T.List[PrintableError]]: diff --git a/tests/sample_errors/assign_inline_menu.blp b/tests/sample_errors/assign_inline_menu.blp deleted file mode 100644 index 9e5a944..0000000 --- a/tests/sample_errors/assign_inline_menu.blp +++ /dev/null @@ -1,5 +0,0 @@ -using Gtk 4.0; - -Button { - label: menu {}; -} diff --git a/tests/sample_errors/assign_inline_menu.err b/tests/sample_errors/assign_inline_menu.err deleted file mode 100644 index 5200603..0000000 --- a/tests/sample_errors/assign_inline_menu.err +++ /dev/null @@ -1 +0,0 @@ -4,3,15,Cannot assign Gio.Menu to string diff --git a/tests/samples/inline_menu.blp b/tests/sample_errors/inline_menu.blp similarity index 100% rename from tests/samples/inline_menu.blp rename to tests/sample_errors/inline_menu.blp diff --git a/tests/sample_errors/inline_menu.err b/tests/sample_errors/inline_menu.err new file mode 100644 index 0000000..3115750 --- /dev/null +++ b/tests/sample_errors/inline_menu.err @@ -0,0 +1 @@ +4,15,4,Namespace Gtk does not contain a type called menu \ No newline at end of file diff --git a/tests/samples/inline_menu.ui b/tests/samples/inline_menu.ui deleted file mode 100644 index a6f2bcc..0000000 --- a/tests/samples/inline_menu.ui +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/tests/test_samples.py b/tests/test_samples.py index ba39ada..b5d3e3e 100644 --- a/tests/test_samples.py +++ b/tests/test_samples.py @@ -140,7 +140,6 @@ class TestSamples(unittest.TestCase): self.assert_sample("file_filter") self.assert_sample("flags") self.assert_sample("id_prop") - self.assert_sample("inline_menu") self.assert_sample("layout") self.assert_sample("menu") self.assert_sample("numbers") @@ -167,7 +166,6 @@ class TestSamples(unittest.TestCase): self.assert_sample_error("a11y_prop_obj_dne") self.assert_sample_error("a11y_prop_type") self.assert_sample_error("abstract_class") - self.assert_sample_error("assign_inline_menu") self.assert_sample_error("action_widget_float_response") self.assert_sample_error("action_widget_have_no_id") self.assert_sample_error("action_widget_multiple_default") @@ -188,6 +186,7 @@ class TestSamples(unittest.TestCase): self.assert_sample_error("filters_in_non_file_filter") self.assert_sample_error("gtk_3") self.assert_sample_error("gtk_exact_version") + self.assert_sample_error("inline_menu") self.assert_sample_error("invalid_bool") self.assert_sample_error("layout_in_non_widget") self.assert_sample_error("no_import_version")