From 7976c6650478c017dde216b01badc303ce604838 Mon Sep 17 00:00:00 2001 From: netliomax25-code Date: Fri, 29 May 2026 15:26:52 +0530 Subject: [PATCH] return error on non-string element in join --- builtin/builtin.go | 6 +++++- builtin/builtin_test.go | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/builtin/builtin.go b/builtin/builtin.go index 87e73614..0447de03 100644 --- a/builtin/builtin.go +++ b/builtin/builtin.go @@ -337,7 +337,11 @@ var Builtins = []*Function{ case []any: var s []string for _, arg := range args[0].([]any) { - s = append(s, arg.(string)) + str, ok := arg.(string) + if !ok { + return nil, fmt.Errorf("invalid argument for join (type %s)", reflect.TypeOf(arg)) + } + s = append(s, str) } return strings.Join(s, glue), nil } diff --git a/builtin/builtin_test.go b/builtin/builtin_test.go index 0d0dec35..77b4856a 100644 --- a/builtin/builtin_test.go +++ b/builtin/builtin_test.go @@ -281,6 +281,7 @@ func TestBuiltin_errors(t *testing.T) { {`now(nil)`, "invalid number of arguments (expected 0, got 1)"}, {`date(nil)`, "interface {} is nil, not string (1:1)"}, {`timezone(nil)`, "cannot use nil as argument (type string) to call timezone (1:10)"}, + {`join([1, 2])`, "invalid argument for join (type int)"}, {`flatten([1, 2], [3, 4])`, "invalid number of arguments (expected 1, got 2)"}, {`flatten(1)`, "cannot flatten int"}, {`fromJSON("5e2482")`, "cannot unmarshal number"},