From: Rico Tzschichholz Date: Fri, 6 Aug 2021 06:40:31 +0000 (+0200) Subject: Slightly improve source_reference for get_dup_func_expression() X-Git-Tag: 0.52.5~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d48d8f3cb008706441327e65dbbe1488f4ea8e89;p=thirdparty%2Fvala.git Slightly improve source_reference for get_dup_func_expression() --- diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 007e71c0b..14aa846f9 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -2970,7 +2970,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { } } 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(); } @@ -4860,7 +4860,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { 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; diff --git a/codegen/valagtypemodule.vala b/codegen/valagtypemodule.vala index e7938dc28..e97aeb1df 100644 --- a/codegen/valagtypemodule.vala +++ b/codegen/valagtypemodule.vala @@ -1434,7 +1434,7 @@ public class Vala.GTypeModule : GErrorModule { add_generic_accessor_function ("get_%s_dup_func".printf (p.name.ascii_down ()), "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_destroy_func".printf (p.name.ascii_down ()), diff --git a/vala/valasemanticanalyzer.vala b/vala/valasemanticanalyzer.vala index 9d2d7ea07..ff6616449 100644 --- a/vala/valasemanticanalyzer.vala +++ b/vala/valasemanticanalyzer.vala @@ -1001,6 +1001,7 @@ public class Vala.SemanticAnalyzer : CodeVisitor { 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; } diff --git a/vala/valasymbolresolver.vala b/vala/valasymbolresolver.vala index b5594bfe0..4ac3fbd3c 100644 --- a/vala/valasymbolresolver.vala +++ b/vala/valasymbolresolver.vala @@ -427,7 +427,7 @@ public class Vala.SymbolResolver : CodeVisitor { // 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);