diff --git a/src/run.go b/src/run.go index bd3f28d..4982983 100644 --- a/src/run.go +++ b/src/run.go @@ -216,7 +216,7 @@ func runVal(line any, stack stack, stacklevel int) (any, ArErr) { break } return runTryCatch(x, stack, stacklevel+1) - case bool, ArObject, number, nil: + case bool, ArObject, number, nil, Callable: return x, ArErr{} } if stackoverflow { diff --git a/src/variable.go b/src/variable.go index 74b5362..125d12a 100644 --- a/src/variable.go +++ b/src/variable.go @@ -275,7 +275,13 @@ func setVariableValue(v setVariable, stack stack, stacklevel int) (any, ArErr) { case ArObject: if _, ok := y.obj["__setindex__"]; ok { callable := y.obj["__setindex__"] - builtinCall(callable, []any{key, resp}) + _, err := runCall(call{ + callable: callable, + args: []any{key, resp}, + line: v.line, + path: v.path, + code: v.code, + }, stack, stacklevel+1) if err.EXISTS { return nil, err }