[vala] dova: Fix virtual methods throwing errors
- From: Jürg Billeter <juergbi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala] dova: Fix virtual methods throwing errors
- Date: Thu, 17 Jun 2010 07:45:27 +0000 (UTC)
commit 47b5fc36cd671e45fb5ed537e5eaba013571a75e
Author: Jürg Billeter <j bitron ch>
Date: Thu Jun 17 09:44:25 2010 +0200
dova: Fix virtual methods throwing errors
codegen/valadovaobjectmodule.vala | 30 ++++++++++++++++++++++++++----
1 files changed, 26 insertions(+), 4 deletions(-)
---
diff --git a/codegen/valadovaobjectmodule.vala b/codegen/valadovaobjectmodule.vala
index 99e8c96..d949915 100644
--- a/codegen/valadovaobjectmodule.vala
+++ b/codegen/valadovaobjectmodule.vala
@@ -1014,6 +1014,9 @@ internal class Vala.DovaObjectModule : DovaArrayModule {
if (m.return_type is GenericType) {
param_list += ", void *";
}
+ if (m.get_error_types ().size > 0) {
+ param_list += ", DovaError **";
+ }
param_list += ")";
var override_func = new CCodeFunction ("%soverride_%s".printf (m.parent_symbol.get_lower_case_cprefix (), m.name));
@@ -1163,6 +1166,10 @@ internal class Vala.DovaObjectModule : DovaArrayModule {
if (m.return_type is GenericType) {
vfunc.add_parameter (new CCodeFormalParameter ("result", "void *"));
}
+ if (m.get_error_types ().size > 0) {
+ var cparam = new CCodeFormalParameter ("error", "DovaError**");
+ vfunc.add_parameter (cparam);
+ }
var vcast = get_type_private_from_type ((ObjectTypeSymbol) m.parent_symbol, get_type_from_instance (new CCodeIdentifier ("this")));
@@ -1173,8 +1180,12 @@ internal class Vala.DovaObjectModule : DovaArrayModule {
}
if (m.return_type is GenericType) {
vcall.add_argument (new CCodeIdentifier ("result"));
- vfunc.block.add_statement (new CCodeExpressionStatement (vcall));
- } else if (m.return_type is VoidType) {
+ }
+ if (m.get_error_types ().size > 0) {
+ vcall.add_argument (new CCodeIdentifier ("error"));
+ }
+
+ if (m.return_type is VoidType || m.return_type is GenericType) {
vfunc.block.add_statement (new CCodeExpressionStatement (vcall));
} else {
vfunc.block.add_statement (new CCodeReturnStatement (vcall));
@@ -1198,6 +1209,10 @@ internal class Vala.DovaObjectModule : DovaArrayModule {
if (m.return_type is GenericType) {
vfunc.add_parameter (new CCodeFormalParameter ("result", "void *"));
}
+ if (m.get_error_types ().size > 0) {
+ var cparam = new CCodeFormalParameter ("error", "DovaError**");
+ vfunc.add_parameter (cparam);
+ }
var base_type = new CCodeIdentifier ("base_type");
@@ -1210,8 +1225,12 @@ internal class Vala.DovaObjectModule : DovaArrayModule {
}
if (m.return_type is GenericType) {
vcall.add_argument (new CCodeIdentifier ("result"));
- vfunc.block.add_statement (new CCodeExpressionStatement (vcall));
- } else if (m.return_type is VoidType) {
+ }
+ if (m.get_error_types ().size > 0) {
+ vcall.add_argument (new CCodeIdentifier ("error"));
+ }
+
+ if (m.return_type is VoidType || m.return_type is GenericType) {
vfunc.block.add_statement (new CCodeExpressionStatement (vcall));
} else {
vfunc.block.add_statement (new CCodeReturnStatement (vcall));
@@ -1228,6 +1247,9 @@ internal class Vala.DovaObjectModule : DovaArrayModule {
if (m.return_type is GenericType) {
param_list += ", void *";
}
+ if (m.get_error_types ().size > 0) {
+ param_list += ", DovaError **";
+ }
param_list += ")";
var override_func = new CCodeFunction ("%soverride_%s".printf (m.parent_symbol.get_lower_case_cprefix (), m.name));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]