From 4ffb53b4d24f7a6c366e20135bbcbe73292bb4c2 Mon Sep 17 00:00:00 2001 From: Rico Tzschichholz Date: Mon, 15 Apr 2024 08:40:05 +0200 Subject: [PATCH] vala: Report invalid type in property assignment attempt Fixes https://gitlab.gnome.org/GNOME/vala/issues/1541 --- tests/Makefile.am | 1 + tests/semantic/assignment-invalid-type-2.test | 14 ++++++++++++++ vala/valaassignment.vala | 5 +++++ 3 files changed, 20 insertions(+) create mode 100644 tests/semantic/assignment-invalid-type-2.test diff --git a/tests/Makefile.am b/tests/Makefile.am index 605a5bed2..5bde146b3 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1088,6 +1088,7 @@ TESTS = \ semantic/assignment-signal-incompatible-method.test \ semantic/assignment-signal-incompatible-type.test \ semantic/assignment-invalid-type.test \ + semantic/assignment-invalid-type-2.test \ semantic/cast-gvalue-unsupported.test \ semantic/cast-gvariant-unsupported.test \ semantic/cast-void-not-allowed.test \ diff --git a/tests/semantic/assignment-invalid-type-2.test b/tests/semantic/assignment-invalid-type-2.test new file mode 100644 index 000000000..ff9d0a844 --- /dev/null +++ b/tests/semantic/assignment-invalid-type-2.test @@ -0,0 +1,14 @@ +Invalid Code + +enum Foo { + MANAM; +} + +class Bar : Object { + public Foo foo { get; set; } +} + +void main () { + var bar = new Bar (); + bar.foo = Foo; +} diff --git a/vala/valaassignment.vala b/vala/valaassignment.vala index 1213e24d0..ff552deb8 100644 --- a/vala/valaassignment.vala +++ b/vala/valaassignment.vala @@ -293,6 +293,11 @@ public class Vala.Assignment : Expression { if (ma != null) { if (ma.symbol_reference is Property) { unowned Property prop = (Property) ma.symbol_reference; + if (right.value_type == null) { + error = true; + Report.error (source_reference, "Assignment: Invalid assignment attempt"); + return false; + } unowned DynamicProperty? dynamic_prop = prop as DynamicProperty; if (dynamic_prop != null) { -- 2.47.2