bool returns_real_struct = prop.property_type.is_real_struct_type ();
- var t = (ObjectTypeSymbol) prop.parent_symbol;
-
- var this_type = new ObjectType (t);
- generate_type_declaration (this_type, decl_space);
- var cselfparam = new CCodeFormalParameter ("self", this_type.get_cname ());
CCodeFormalParameter cvalueparam;
if (returns_real_struct) {
} else {
function = new CCodeFunction (acc.get_cname (), "void");
}
- function.add_parameter (cselfparam);
+
+ if (prop.binding == MemberBinding.INSTANCE) {
+ var t = (ObjectTypeSymbol) prop.parent_symbol;
+ var this_type = new ObjectType (t);
+ generate_type_declaration (this_type, decl_space);
+ var cselfparam = new CCodeFormalParameter ("self", this_type.get_cname ());
+
+ function.add_parameter (cselfparam);
+ }
+
if (acc.writable || acc.construction || returns_real_struct) {
function.add_parameter (cvalueparam);
}
} else if (sym is Property) {
var prop = (Property) sym;
this_parameter = prop.this_parameter;
- may_access_instance_members = true;
+ may_access_instance_members = (prop.binding == MemberBinding.INSTANCE);
} else if (sym is Constructor) {
var c = (Constructor) sym;
this_parameter = c.this_parameter;
var field_type = prop.property_type.copy ();
prop.field = new Field ("_%s".printf (prop.name), field_type, prop.default_expression, prop.source_reference);
prop.field.access = SymbolAccessibility.PRIVATE;
+ prop.field.binding = prop.binding;
}
}
} else if (sym is Destructor) {
return true;
} else if (sym is Property) {
- return true;
+ var p = (Property) sym;
+ return p.binding == MemberBinding.INSTANCE;
}
sym = sym.parent_symbol;
}