[vala] codegen: Fix lvalue access to fields
- From: Luca Bruno <lucabru src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala] codegen: Fix lvalue access to fields
- Date: Fri, 8 Apr 2011 18:47:18 +0000 (UTC)
commit ad14bf8355f9f5cbc74cb7781a8d72257888f532
Author: Luca Bruno <lucabru src gnome org>
Date: Wed Mar 16 15:25:36 2011 +0100
codegen: Fix lvalue access to fields
codegen/valaccodememberaccessmodule.vala | 6 +++++-
tests/delegates/delegates.vala | 6 ++++++
2 files changed, 11 insertions(+), 1 deletions(-)
---
diff --git a/codegen/valaccodememberaccessmodule.vala b/codegen/valaccodememberaccessmodule.vala
index 7c14732..2fb81fb 100644
--- a/codegen/valaccodememberaccessmodule.vala
+++ b/codegen/valaccodememberaccessmodule.vala
@@ -121,7 +121,11 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
set_cvalue (expr, get_array_length_cexpression (expr.inner, 1));
} else if (expr.symbol_reference is Field) {
var field = (Field) expr.symbol_reference;
- expr.target_value = load_field (field, expr.inner != null ? expr.inner.target_value : null);
+ if (expr.lvalue) {
+ expr.target_value = get_field_cvalue (field, expr.inner != null ? expr.inner.target_value : null);
+ } else {
+ expr.target_value = load_field (field, expr.inner != null ? expr.inner.target_value : null);
+ }
} else if (expr.symbol_reference is EnumValue) {
var ev = (EnumValue) expr.symbol_reference;
diff --git a/tests/delegates/delegates.vala b/tests/delegates/delegates.vala
index e80fd3f..5002419 100644
--- a/tests/delegates/delegates.vala
+++ b/tests/delegates/delegates.vala
@@ -22,6 +22,8 @@ interface Maman.Foo : Object {
class Maman.Bar : Object, Foo {
const DelegateStruct const_delegate_struct = { do_void_action };
+ InstanceCallback callback_field;
+
public Bar () {
}
@@ -68,6 +70,10 @@ class Maman.Bar : Object, Foo {
call_instance_delegate (bar.foo_method);
}
+ void test_field_reference_transfer () {
+ var foo = (owned) callback_field;
+ }
+
public static int main () {
stdout.printf ("Delegate Test: 1");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]