From 417f163a5ab9f1f6d5ee33cabd2a705dc227eb1e Mon Sep 17 00:00:00 2001 From: James Westman Date: Mon, 18 Apr 2022 15:38:04 -0500 Subject: [PATCH] Fix crash in flags value for unchecked classes --- blueprintcompiler/language/values.py | 2 +- tests/samples/unchecked_class.blp | 1 + tests/samples/unchecked_class.ui | 4 +++- tests/samples/unchecked_class_dec.blp | 7 +++++++ tests/test_samples.py | 2 +- 5 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 tests/samples/unchecked_class_dec.blp diff --git a/blueprintcompiler/language/values.py b/blueprintcompiler/language/values.py index b17c5bb..29e5d98 100644 --- a/blueprintcompiler/language/values.py +++ b/blueprintcompiler/language/values.py @@ -133,7 +133,7 @@ class FlagsValue(Value): @validate() def parent_is_bitfield(self): type = self.parent.value_type - if not isinstance(type, gir.Bitfield): + if type is not None and not isinstance(type, gir.Bitfield): raise CompileError(f"{type.full_name} is not a bitfield type") def emit_xml(self, xml: XmlEmitter): diff --git a/tests/samples/unchecked_class.blp b/tests/samples/unchecked_class.blp index 33a3bac..3be0b04 100644 --- a/tests/samples/unchecked_class.blp +++ b/tests/samples/unchecked_class.blp @@ -2,5 +2,6 @@ using Gtk 4.0; .MyComponent component { .MyComponent2 { + flags-value: a | b; } } diff --git a/tests/samples/unchecked_class.ui b/tests/samples/unchecked_class.ui index 5bbce55..6518cfe 100644 --- a/tests/samples/unchecked_class.ui +++ b/tests/samples/unchecked_class.ui @@ -3,7 +3,9 @@ - + + a|b + diff --git a/tests/samples/unchecked_class_dec.blp b/tests/samples/unchecked_class_dec.blp new file mode 100644 index 0000000..81d342e --- /dev/null +++ b/tests/samples/unchecked_class_dec.blp @@ -0,0 +1,7 @@ +using Gtk 4.0; + +.MyComponent component { + .MyComponent2 { + flags-value: "a|b"; + } +} diff --git a/tests/test_samples.py b/tests/test_samples.py index ffc679f..3f9a921 100644 --- a/tests/test_samples.py +++ b/tests/test_samples.py @@ -217,4 +217,4 @@ class TestSamples(unittest.TestCase): self.assert_decompile("template") self.assert_decompile("translated") self.assert_decompile("using") - self.assert_decompile("unchecked_class") + self.assert_decompile("unchecked_class_dec")