From: Rico Tzschichholz Date: Mon, 15 Apr 2024 06:40:05 +0000 (+0200) Subject: vala: Report invalid type in property assignment attempt X-Git-Tag: 0.56.17~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4ffb53b4d24f7a6c366e20135bbcbe73292bb4c2;p=thirdparty%2Fvala.git vala: Report invalid type in property assignment attempt Fixes https://gitlab.gnome.org/GNOME/vala/issues/1541 --- 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) {