diff --git a/blueprintcompiler/language/imports.py b/blueprintcompiler/language/imports.py index 15ba8e4..2e519ed 100644 --- a/blueprintcompiler/language/imports.py +++ b/blueprintcompiler/language/imports.py @@ -34,14 +34,17 @@ class GtkDirective(AstNode): if self.tokens["version"] not in ["4.0"]: err = CompileError("Only GTK 4 is supported") if self.tokens["version"].startswith("4"): - err.hint("Expected the GIR version, not an exact version number. Use `using Gtk 4.0;`.") + err.hint("Expected the GIR version, not an exact version number. Use 'using Gtk 4.0;'.") else: - err.hint("Expected `using Gtk 4.0;`") + err.hint("Expected 'using Gtk 4.0;'") raise err @property def gir_namespace(self): + # validate the GTK version first to make sure the more specific error + # message is emitted + self.gtk_version() return gir.get_namespace("Gtk", self.tokens["version"]) diff --git a/blueprintcompiler/language/ui.py b/blueprintcompiler/language/ui.py index e7020c9..a41e585 100644 --- a/blueprintcompiler/language/ui.py +++ b/blueprintcompiler/language/ui.py @@ -44,8 +44,6 @@ class UI(AstNode): try: gir_ctx.add_namespace(self.children[GtkDirective][0].gir_namespace) except CompileError as e: - e.start = self.children[GtkDirective][0].group.start - e.end = self.children[GtkDirective][0].group.end self._gir_errors.append(e) for i in self.children[Import]: diff --git a/tests/sample_errors/gtk_3.blp b/tests/sample_errors/gtk_3.blp new file mode 100644 index 0000000..440b006 --- /dev/null +++ b/tests/sample_errors/gtk_3.blp @@ -0,0 +1 @@ +using Gtk 3.0; diff --git a/tests/sample_errors/gtk_3.err b/tests/sample_errors/gtk_3.err new file mode 100644 index 0000000..e6d99ee --- /dev/null +++ b/tests/sample_errors/gtk_3.err @@ -0,0 +1 @@ +1,11,3,Only GTK 4 is supported diff --git a/tests/sample_errors/gtk_exact_version.blp b/tests/sample_errors/gtk_exact_version.blp new file mode 100644 index 0000000..24ad011 --- /dev/null +++ b/tests/sample_errors/gtk_exact_version.blp @@ -0,0 +1 @@ +using Gtk 4.6; diff --git a/tests/sample_errors/gtk_exact_version.err b/tests/sample_errors/gtk_exact_version.err new file mode 100644 index 0000000..e6d99ee --- /dev/null +++ b/tests/sample_errors/gtk_exact_version.err @@ -0,0 +1 @@ +1,11,3,Only GTK 4 is supported diff --git a/tests/test_samples.py b/tests/test_samples.py index 38db1b9..a1162f3 100644 --- a/tests/test_samples.py +++ b/tests/test_samples.py @@ -178,6 +178,8 @@ class TestSamples(unittest.TestCase): self.assert_sample_error("duplicate_obj_id") self.assert_sample_error("enum_member_dne") 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("invalid_bool") self.assert_sample_error("layout_in_non_widget") self.assert_sample_error("ns_not_imported")