Print unhandled errors in REPL mode

JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai dbatyai@inf.u-szeged.hu
This commit is contained in:
Dániel Bátyai
2016-04-14 14:01:47 +02:00
committed by bzsolt
parent ff185dc57e
commit e191794118
2 changed files with 10 additions and 32 deletions
+3 -18
View File
@@ -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 * Convert completion of 'eval' to API value and completion code
* *
* Note: * Note:
* if the output value contains string / object, it should be freed * The value returned in 'retval_p' should be freed with jerry_api_release_value
* with jerry_api_release_string / jerry_api_release_object,
* just when it becomes unnecessary.
* *
* @return completion code * @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 ecma_value_t completion) /**< completion of 'eval'-mode
* code execution */ * code execution */
{ {
jerry_completion_code_t ret_code; jerry_api_convert_ecma_value_to_api_value (retval_p, completion);
if (!ecma_is_value_error (completion)) return (ecma_is_value_error (completion)) ? JERRY_COMPLETION_CODE_UNHANDLED_EXCEPTION : JERRY_COMPLETION_CODE_OK;
{
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));
ret_code = JERRY_COMPLETION_CODE_UNHANDLED_EXCEPTION;
}
return ret_code;
} /* jerry_api_convert_eval_completion_to_retval */ } /* jerry_api_convert_eval_completion_to_retval */
/** /**
+7 -14
View File
@@ -537,7 +537,7 @@ main (int argc,
printf ("%s", prompt); printf ("%s", prompt);
// input a line /* Read a line */
while (true) while (true)
{ {
if (fread (source_buffer_tail, 1, 1, stdin) != 1 && len == 0) if (fread (source_buffer_tail, 1, 1, stdin) != 1 && len == 0)
@@ -556,23 +556,16 @@ main (int argc,
if (len > 0) if (len > 0)
{ {
// evaluate the line /* Evaluate the line */
jerry_api_value_t ret_val; jerry_api_value_t ret_val;
ret_code = jerry_api_eval (buffer, len, false, false, &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 jerry_api_release_value (&ret_val_print);
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); jerry_api_release_value (&ret_val);