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;
class Maman.Bar : Object, Foo {
const DelegateStruct const_delegate_struct = { do_void_action };
+ InstanceCallback callback_field;
+
public Bar () {
}
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");