vala r2198 - in trunk: . gobject
- From: juergbi svn gnome org
- To: svn-commits-list gnome org
- Subject: vala r2198 - in trunk: . gobject
- Date: Tue, 16 Dec 2008 23:46:11 +0000 (UTC)
Author: juergbi
Date: Tue Dec 16 23:46:11 2008
New Revision: 2198
URL: http://svn.gnome.org/viewvc/vala?rev=2198&view=rev
Log:
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
Modified:
trunk/ChangeLog
trunk/gobject/valaccodebasemodule.vala
trunk/gobject/valagobjectmodule.vala
Modified: trunk/gobject/valaccodebasemodule.vala
==============================================================================
--- trunk/gobject/valaccodebasemodule.vala (original)
+++ trunk/gobject/valaccodebasemodule.vala Tue Dec 16 23:46:11 2008
@@ -807,6 +807,12 @@
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);
@@ -841,6 +847,12 @@
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 {
Modified: trunk/gobject/valagobjectmodule.vala
==============================================================================
--- trunk/gobject/valagobjectmodule.vala (original)
+++ trunk/gobject/valagobjectmodule.vala Tue Dec 16 23:46:11 2008
@@ -1705,6 +1705,12 @@
} 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
@@ -1719,6 +1725,12 @@
// 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
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]