return get_ccode_free_function (sym) == "g_boxed_free";
}
- public static bool get_ccode_finish_instance (CodeNode node) {
- return get_ccode_attribute (node).finish_instance;
+ public static bool get_ccode_finish_instance (Method m) {
+ assert (m.coroutine);
+ return get_ccode_attribute (m).finish_instance;
}
public static string get_ccode_type_id (CodeNode node) {
}
public static string get_ccode_finish_name (Method m) {
+ assert (m.coroutine);
return get_ccode_attribute(m).finish_name;
}
public static string get_ccode_finish_vfunc_name (Method m) {
+ assert (m.coroutine);
return get_ccode_attribute(m).finish_vfunc_name;
}
public static string get_ccode_finish_real_name (Method m) {
+ assert (m.coroutine);
return get_ccode_attribute(m).finish_real_name;
}
}
}
- if (m != null && m.parent_symbol is Class) {
+ if (m != null && m.coroutine && m.parent_symbol is Class) {
if (get_ccode_finish_instance (m)) {
var tmp = new CCodeMemberAccess.pointer (new CCodeIdentifier ("_data_"), "_source_object_");
out_arg_map.set (get_param_pos (get_ccode_instance_pos (m)), tmp);
instance = new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, get_cvalue_ (instance_value));
}
- if (expr.is_yield_expression) {
+ if (!m.coroutine) {
+ in_arg_map.set (get_param_pos (get_ccode_instance_pos (m)), instance);
+ } else if (expr.is_yield_expression) {
in_arg_map.set (get_param_pos (get_ccode_instance_pos (m)), instance);
if (get_ccode_finish_instance (m)) {
out_arg_map.set (get_param_pos (get_ccode_instance_pos (m)), instance);