aboutsummaryrefslogtreecommitdiff
path: root/src/check_expr.cpp
diff options
context:
space:
mode:
authorJeroen van Rijn <Kelimion@users.noreply.github.com>2023-11-14 17:08:24 +0100
committerGitHub <noreply@github.com>2023-11-14 17:08:24 +0100
commit354d00963c54d148215a38b3b941f2e5e1910f2b (patch)
tree1268f47ebe55c592cd5619312ebee05154477daa /src/check_expr.cpp
parent8a849bd1bd230fd3eeb08ebbdb5d9c153a7a5da3 (diff)
parent9e5e49a65daf1f189e49c0eade7d90d148e7ac71 (diff)
Merge pull request #2954 from laytan/add-suggestion-passing-slice-into-variadic-arg
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;
}