From: Rico Tzschichholz Date: Mon, 15 Apr 2024 06:40:05 +0000 (+0200) Subject: vala: Report invalid type in property assignment attempt X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=1c151f5eea9f259556425fcfaa17403d096b7a4f;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 ddbcac3a4..32fa57abe 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1126,6 +1126,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 0c5be5bf5..e9fb6054a 100644 --- a/vala/valaassignment.vala +++ b/vala/valaassignment.vala @@ -323,6 +323,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) {