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));
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")));
}
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));
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");
}
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));
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));