vala r2198 - in trunk: . gobject



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]