vala r1070 - in trunk: . gobject
- From: juergbi svn gnome org
- To: svn-commits-list gnome org
- Subject: vala r1070 - in trunk: . gobject
- Date: Fri, 29 Feb 2008 22:23:30 +0000 (GMT)
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]