+2008-12-17 Jürg Billeter <j@bitron.ch>
+
+ * gobject/valaccodebasemodule.vala:
+ * gobject/valagobjectmodule.vala:
+
+ Report error when using class fields or constructors in compact
+ classes, fixes bug 564090
+
2008-12-17 Jürg Billeter <j@bitron.ch>
* gobject/valaccodearraymodule.vala:
lhs = new CCodeMemberAccess.pointer (new CCodeIdentifier ("self"), f.get_cname ());
} else if (f.binding == MemberBinding.CLASS) {
+ if (!is_gtypeinstance) {
+ Report.error (f.source_reference, "class fields are not supported in compact classes");
+ f.error = true;
+ return;
+ }
+
st = type_struct;
} else {
var cdecl = new CCodeDeclaration (field_ctype);
lhs = new CCodeMemberAccess.pointer (new CCodeIdentifier ("self"), f.get_cname ());
}
} else if (f.binding == MemberBinding.CLASS) {
+ if (!is_gtypeinstance) {
+ Report.error (f.source_reference, "class fields are not supported in compact classes");
+ f.error = true;
+ return;
+ }
+
st = type_priv_struct;
lhs = new CCodeMemberAccess.pointer (new CCodeMemberAccess.pointer (new CCodeIdentifier ("klass"), "priv"), f.get_cname ());
} else {
} else if (c.binding == MemberBinding.CLASS) {
// class constructor
+ if (cl.is_compact) {
+ Report.error (c.source_reference, "class constructors are not supported in compact classes");
+ c.error = true;
+ return;
+ }
+
if (current_method_inner_error) {
/* always separate error parameter and inner_error local variable
* as error may be set to NULL but we're always interested in inner errors
// static class constructor
// add to class_init
+ if (cl.is_compact) {
+ Report.error (c.source_reference, "static constructors are not supported in compact classes");
+ c.error = true;
+ return;
+ }
+
if (current_method_inner_error) {
/* always separate error parameter and inner_error local variable
* as error may be set to NULL but we're always interested in inner errors