vala r1070 - in trunk: . gobject



Author: juergbi
Date: Fri Feb 29 22:23:29 2008
New Revision: 1070
URL: http://svn.gnome.org/viewvc/vala?rev=1070&view=rev

Log:
2008-02-29  Juerg Billeter  <j bitron ch>

	* gobject/valaccodegenerator.vala,
	  gobject/valaccodegeneratormethod.vala: support methods throwing
	  exceptions and returning generic type parameter


Modified:
   trunk/ChangeLog
   trunk/gobject/valaccodegenerator.vala
   trunk/gobject/valaccodegeneratormethod.vala

Modified: trunk/gobject/valaccodegenerator.vala
==============================================================================
--- trunk/gobject/valaccodegenerator.vala	(original)
+++ trunk/gobject/valaccodegenerator.vala	Fri Feb 29 22:23:29 2008
@@ -1354,10 +1354,10 @@
 			var cerror_block = new CCodeBlock ();
 			cerror_block.add_statement (new CCodeExpressionStatement (cpropagate));
 
-			if (current_return_type != null && current_return_type.data_type != null) {
-				cerror_block.add_statement (new CCodeReturnStatement (default_value_for_type (current_return_type)));
-			} else {
+			if (current_return_type is VoidType) {
 				cerror_block.add_statement (new CCodeReturnStatement ());
+			} else {
+				cerror_block.add_statement (new CCodeReturnStatement (default_value_for_type (current_return_type)));
 			}
 
 			var ccond = new CCodeBinaryExpression (CCodeBinaryOperator.INEQUALITY, new CCodeIdentifier ("inner_error"), new CCodeConstant ("NULL"));
@@ -2111,22 +2111,6 @@
 
 		add_simple_check (stmt, cfrag);
 
-		/* free temporary objects */
-		foreach (VariableDeclarator decl in temp_ref_vars) {
-			var ma = new MemberAccess.simple (decl.name);
-			ma.symbol_reference = decl;
-			cfrag.append (new CCodeExpressionStatement (get_unref_expression (new CCodeIdentifier (decl.name), decl.type_reference, ma)));
-		}
-
-		temp_vars.clear ();
-		temp_ref_vars.clear ();
-
-		if (current_return_type != null && current_return_type.data_type != null) {
-			cfrag.append (new CCodeReturnStatement (default_value_for_type (current_return_type)));
-		} else {
-			cfrag.append (new CCodeReturnStatement ());
-		}
-
 		stmt.ccodenode = cfrag;
 	}
 

Modified: trunk/gobject/valaccodegeneratormethod.vala
==============================================================================
--- trunk/gobject/valaccodegeneratormethod.vala	(original)
+++ trunk/gobject/valaccodegeneratormethod.vala	Fri Feb 29 22:23:29 2008
@@ -731,6 +731,10 @@
 			return new CCodeConstant ("NULL");
 		} else if (type.data_type != null && type.data_type.get_default_value () != null) {
 			return new CCodeConstant (type.data_type.get_default_value ());
+		} else if (type.type_parameter != null) {
+			return new CCodeConstant ("NULL");
+		} else if (type is ErrorType) {
+			return new CCodeConstant ("NULL");
 		}
 		return null;
 	}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]