diff --git a/blueprintcompiler/language/values.py b/blueprintcompiler/language/values.py index 833a4a3..7fa6bfa 100644 --- a/blueprintcompiler/language/values.py +++ b/blueprintcompiler/language/values.py @@ -338,7 +338,14 @@ class IdentLiteral(AstNode): raise CompileError( '"item" can only be used in an expression literal' ) - elif self.ident not in ["true", "false"]: + elif self.ident in ["true", "false"]: + if expected_type is not None and not isinstance( + expected_type, gir.BoolType + ): + raise CompileError( + f"Cannot assign boolean to {expected_type.full_name}" + ) + else: raise CompileError( f"Could not find object with ID {self.ident}", did_you_mean=( diff --git a/tests/sample_errors/convert_bool_to_obj.blp b/tests/sample_errors/convert_bool_to_obj.blp new file mode 100644 index 0000000..5f856c0 --- /dev/null +++ b/tests/sample_errors/convert_bool_to_obj.blp @@ -0,0 +1,5 @@ +using Gtk 4.0; + +Button { + child: false; +} diff --git a/tests/sample_errors/convert_bool_to_obj.err b/tests/sample_errors/convert_bool_to_obj.err new file mode 100644 index 0000000..389f69c --- /dev/null +++ b/tests/sample_errors/convert_bool_to_obj.err @@ -0,0 +1 @@ +4,10,5,Cannot assign boolean to Gtk.Widget \ No newline at end of file