Skip to content

Commit 9f3864e

Browse files
return error on non-string element in join
1 parent 5929311 commit 9f3864e

2 files changed

Lines changed: 6 additions & 1 deletion

File tree

builtin/builtin.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,11 @@ var Builtins = []*Function{
337337
case []any:
338338
var s []string
339339
for _, arg := range args[0].([]any) {
340-
s = append(s, arg.(string))
340+
str, ok := arg.(string)
341+
if !ok {
342+
return nil, fmt.Errorf("invalid argument for join (type %s)", reflect.TypeOf(arg))
343+
}
344+
s = append(s, str)
341345
}
342346
return strings.Join(s, glue), nil
343347
}

builtin/builtin_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,7 @@ func TestBuiltin_errors(t *testing.T) {
281281
{`now(nil)`, "invalid number of arguments (expected 0, got 1)"},
282282
{`date(nil)`, "interface {} is nil, not string (1:1)"},
283283
{`timezone(nil)`, "cannot use nil as argument (type string) to call timezone (1:10)"},
284+
{`join([1, 2])`, "invalid argument for join (type int)"},
284285
{`flatten([1, 2], [3, 4])`, "invalid number of arguments (expected 1, got 2)"},
285286
{`flatten(1)`, "cannot flatten int"},
286287
{`fromJSON("5e2482")`, "cannot unmarshal number"},

0 commit comments

Comments
 (0)