}
} else {
// duplicating non-reference counted objects may cause side-effects (and performance issues)
- Report.error (source_reference, "duplicating %s instance, use unowned variable or explicitly invoke copy method", type.type_symbol.name);
+ Report.error (source_reference, "duplicating `%s' instance, use unowned variable or explicitly invoke copy method", type.type_symbol.name);
return new CCodeInvalidExpression();
}
arg_map.set (get_param_pos (0.1 * type_param_index + 0.02), get_type_id_expression (type_arg, is_chainup));
if (requires_copy (type_arg)) {
- var dup_func = get_dup_func_expression (type_arg, type_arg.source_reference, is_chainup);
+ var dup_func = get_dup_func_expression (type_arg, type_arg.source_reference ?? expr.source_reference, is_chainup);
if (dup_func == null) {
// type doesn't contain a copy function
expr.error = true;
add_generic_accessor_function ("get_%s".printf (get_ccode_copy_function (p)),
"GBoxedCopyFunc",
- get_dup_func_expression (p_data_type, null),
+ get_dup_func_expression (p_data_type, p_data_type.source_reference),
p, cl, iface);
add_generic_accessor_function ("get_%s".printf (get_ccode_destroy_function (p)),
return generic_type;
}
actual_type = actual_type.copy ();
+ actual_type.source_reference = generic_type.source_reference;
actual_type.value_owned = actual_type.value_owned && generic_type.value_owned;
return actual_type;
}
// still required for vapigen
if (unresolved_type.unresolved_symbol.name == "void") {
- return new VoidType ();
+ return new VoidType (unresolved_type.source_reference);
}
var sym = resolve_symbol (unresolved_type.unresolved_symbol);