From eedf6760ad1046ef571ef1a37437ad34d3481e54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stanis=C5=82aw=20Barzowski?= Date: Thu, 18 Jan 2018 00:49:14 +0100 Subject: [PATCH] Convert non-string errors to string --- interpreter.go | 6 ++++++ testdata/error_function_fail.golden | 10 ++++++++++ testdata/error_function_fail.jsonnet | 1 + testdata/error_object.golden | 10 ++++++++++ testdata/error_object.jsonnet | 1 + 5 files changed, 28 insertions(+) create mode 100644 testdata/error_function_fail.golden create mode 100644 testdata/error_function_fail.jsonnet create mode 100644 testdata/error_object.golden create mode 100644 testdata/error_object.jsonnet 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