From 37333e23392153045ca07b98f34451a37f580658 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1niel=20B=C3=A1tyai?= Date: Tue, 12 Apr 2016 15:11:33 +0200 Subject: [PATCH] Print unhandled errors in REPL mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai dbatyai@inf.u-szeged.hu --- jerry-core/jerry.c | 21 +++------------------ main-unix.c | 21 +++++++-------------- 2 files changed, 10 insertions(+), 32 deletions(-) diff --git a/jerry-core/jerry.c b/jerry-core/jerry.c index 943f4811d2..2887a07158 100644 --- a/jerry-core/jerry.c +++ b/jerry-core/jerry.c @@ -515,9 +515,7 @@ jerry_api_convert_api_value_to_ecma_value (ecma_value_t *out_value_p, /**< [out] * Convert completion of 'eval' to API value and completion code * * Note: - * if the output value contains string / object, it should be freed - * with jerry_api_release_string / jerry_api_release_object, - * just when it becomes unnecessary. + * The value returned in 'retval_p' should be freed with jerry_api_release_value * * @return completion code */ @@ -526,22 +524,9 @@ jerry_api_convert_eval_completion_to_retval (jerry_api_value_t *retval_p, /**< [ ecma_value_t completion) /**< completion of 'eval'-mode * code execution */ { - jerry_completion_code_t ret_code; - - if (!ecma_is_value_error (completion)) - { - jerry_api_convert_ecma_value_to_api_value (retval_p, completion); - - ret_code = JERRY_COMPLETION_CODE_OK; - } - else - { - jerry_api_convert_ecma_value_to_api_value (retval_p, ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED)); + jerry_api_convert_ecma_value_to_api_value (retval_p, completion); - ret_code = JERRY_COMPLETION_CODE_UNHANDLED_EXCEPTION; - } - - return ret_code; + return (ecma_is_value_error (completion)) ? JERRY_COMPLETION_CODE_UNHANDLED_EXCEPTION : JERRY_COMPLETION_CODE_OK; } /* jerry_api_convert_eval_completion_to_retval */ /** diff --git a/main-unix.c b/main-unix.c index c6a119d973..3bf60f86d3 100644 --- a/main-unix.c +++ b/main-unix.c @@ -537,7 +537,7 @@ main (int argc, printf ("%s", prompt); - // input a line + /* Read a line */ while (true) { if (fread (source_buffer_tail, 1, 1, stdin) != 1 && len == 0) @@ -556,23 +556,16 @@ main (int argc, if (len > 0) { - // evaluate the line + /* Evaluate the line */ jerry_api_value_t ret_val; ret_code = jerry_api_eval (buffer, len, false, false, &ret_val); - if (ret_code == JERRY_COMPLETION_CODE_OK) + /* Print return value */ + const jerry_api_value_t args[] = { ret_val }; + jerry_api_value_t ret_val_print; + if (jerry_api_call_function (print_function.u.v_object, NULL, &ret_val_print, args, 1)) { - // print return value - const jerry_api_value_t args[] = {ret_val}; - jerry_api_value_t ret_val_print; - if (jerry_api_call_function (print_function.u.v_object, NULL, &ret_val_print, args, 1)) - { - jerry_api_release_value (&ret_val_print); - } - } - else - { - printf ("JERRY_COMPLETION_CODE_UNHANDLED_EXCEPTION\n"); + jerry_api_release_value (&ret_val_print); } jerry_api_release_value (&ret_val);