aboutsummaryrefslogtreecommitdiff
path: root/src/check_expr.cpp
diff options
context:
space:
mode:
authorLaytan Laats <laytanlaats@hotmail.com>2023-11-14 16:53:30 +0100
committerLaytan Laats <laytanlaats@hotmail.com>2023-11-14 16:56:52 +0100
commit9e5e49a65daf1f189e49c0eade7d90d148e7ac71 (patch)
tree3fed6df6fa2a48510e9d897972e5dca42650a984 /src/check_expr.cpp
parent70c1f9d0e19a4b97c03308de8f2b9c0c28ba4cf1 (diff)
checker: suggest ..[]T when passing a slice to variadic arg ..T
Diffstat (limited to 'src/check_expr.cpp')
-rw-r--r--src/check_expr.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp
index 5cc548739..5a8b57df6 100644
--- a/src/check_expr.cpp
+++ b/src/check_expr.cpp
@@ -5652,6 +5652,14 @@ gb_internal CallArgumentError check_call_arguments_internal(CheckerContext *c, A
} else {
if (show_error) {
check_assignment(c, o, param_type, str_lit("procedure argument"));
+
+ Type *src = base_type(o->type);
+ Type *dst = base_type(param_type);
+ if (is_type_slice(src) && are_types_identical(src->Slice.elem, dst)) {
+ gbString a = expr_to_string(o->expr);
+ error_line("\tSuggestion: Did you mean to pass the slice into the variadic parameter with ..%s?\n\n", a);
+ gb_string_free(a);
+ }
}
err = CallArgumentError_WrongTypes;
}