diff options
author | Rico Tzschichholz <ricotz@ubuntu.com> | 2017-03-12 22:33:34 +0100 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2017-03-12 22:33:34 +0100 |
commit | 04489bc5ee34edfa2024f910a81c24bc9308c191 (patch) | |
tree | 4c33af2d8ec4346941bd7ed585f46a488984204b | |
parent | f23a4e7b2cd453a79a82b0fa80a2b5d9a867416f (diff) | |
download | vala-04489bc5ee34edfa2024f910a81c24bc9308c191.tar.gz |
codegen: Property equality check can't be applied to non-automatic-bodies
This is check was introduced with 64b9bfc1bc0abfed45ad07a8ebaef8a5f167f848
https://bugzilla.gnome.org/show_bug.cgi?id=779955
-rw-r--r-- | codegen/valaccodebasemodule.vala | 2 | ||||
-rw-r--r-- | tests/Makefile.am | 1 | ||||
-rw-r--r-- | tests/objects/bug779955.vala | 20 |
3 files changed, 22 insertions, 1 deletions
diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 3a68264d2..6c4755a3e 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -1779,7 +1779,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { notify_call.add_argument (get_property_canonical_cconstant (prop)); var get_accessor = prop.get_accessor; - if (get_accessor != null) { + if (get_accessor != null && get_accessor.automatic_body) { var property_type = prop.property_type; var get_call = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_real_name (get_accessor))); get_call.add_argument (new CCodeIdentifier (is_virtual ? "base" : "self")); diff --git a/tests/Makefile.am b/tests/Makefile.am index 4360e5eab..b1d3ea299 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -220,6 +220,7 @@ TESTS = \ objects/bug779038-2.test \ objects/bug779038-3.test \ objects/bug779219.vala \ + objects/bug779955.vala \ errors/errors.vala \ errors/bug567181.vala \ errors/bug579101.vala \ diff --git a/tests/objects/bug779955.vala b/tests/objects/bug779955.vala new file mode 100644 index 000000000..e67ef0ca8 --- /dev/null +++ b/tests/objects/bug779955.vala @@ -0,0 +1,20 @@ +public class Foo : Object { + int i = 42; + + public int bar { + get { + return i; + } + set { + if (value == 42) { + i = 23; + } + } + } +} + +void main () { + var f = new Foo (); + f.bar = 42; + assert (f.bar == 23); +} |