diff --git a/interpreter.go b/interpreter.go index 6d1e995..fd82c89 100644 --- a/interpreter.go +++ b/interpreter.go @@ -364,6 +364,12 @@ func (i *interpreter) evaluate(a ast.Node, tc tailCallStatus) (value, error) { // error when evaluating error message return nil, err } + if msgVal.getType() != stringType { + msgVal, err = builtinToString(e, &readyValue{msgVal}) + if err != nil { + return nil, err + } + } msg, err := e.getString(msgVal) if err != nil { return nil, err diff --git a/testdata/error_function_fail.golden b/testdata/error_function_fail.golden new file mode 100644 index 0000000..56407c5 --- /dev/null +++ b/testdata/error_function_fail.golden @@ -0,0 +1,10 @@ +RUNTIME ERROR: Couldn't manifest function in JSON output. +------------------------------------------------- + testdata/error_function_fail:1:1-22 $ + +error (function(x) 42) + +------------------------------------------------- + During evaluation + + diff --git a/testdata/error_function_fail.jsonnet b/testdata/error_function_fail.jsonnet new file mode 100644 index 0000000..79e4c7b --- /dev/null +++ b/testdata/error_function_fail.jsonnet @@ -0,0 +1 @@ +error (function(x) 42) \ No newline at end of file diff --git a/testdata/error_object.golden b/testdata/error_object.golden new file mode 100644 index 0000000..bc69cb7 --- /dev/null +++ b/testdata/error_object.golden @@ -0,0 +1,10 @@ +RUNTIME ERROR: {"blah": 42} +------------------------------------------------- + testdata/error_object:1:1-21 $ + +error { "blah": 42 } + +------------------------------------------------- + During evaluation + + diff --git a/testdata/error_object.jsonnet b/testdata/error_object.jsonnet new file mode 100644 index 0000000..c6461fa --- /dev/null +++ b/testdata/error_object.jsonnet @@ -0,0 +1 @@ +error { "blah": 42 } \ No newline at end of file