Introduce C API to query the type of an Error object (#2177)
New api function: * jerry_get_error_type Additionally update a few places where this new function can be used. JerryScript-DCO-1.0-Signed-off-by: Peter Gal pgal.u-szeged@partner.samsung.com
This commit is contained in:
@@ -119,59 +119,6 @@ read_file (const char *file_name, /**< source code */
|
||||
return (const uint8_t *) buffer;
|
||||
} /* read_file */
|
||||
|
||||
/**
|
||||
* Check whether an error is a SyntaxError or not
|
||||
*
|
||||
* @return true - if param is SyntaxError
|
||||
* false - otherwise
|
||||
*/
|
||||
static bool
|
||||
jerry_value_is_syntax_error (jerry_value_t error_value) /**< error value */
|
||||
{
|
||||
assert (jerry_is_feature_enabled (JERRY_FEATURE_ERROR_MESSAGES));
|
||||
|
||||
if (!jerry_value_is_object (error_value))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
jerry_value_t prop_name = jerry_create_string ((const jerry_char_t *)"name");
|
||||
jerry_value_t error_name = jerry_get_property (error_value, prop_name);
|
||||
jerry_release_value (prop_name);
|
||||
|
||||
if (jerry_value_has_error_flag (error_name)
|
||||
|| !jerry_value_is_string (error_name))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
jerry_size_t err_str_size = jerry_get_string_size (error_name);
|
||||
const char syntax_error_str[] = "SyntaxError";
|
||||
|
||||
if (err_str_size != strlen (syntax_error_str) - 1)
|
||||
{
|
||||
jerry_release_value (error_name);
|
||||
return false;
|
||||
}
|
||||
|
||||
jerry_char_t err_str_buf[err_str_size];
|
||||
|
||||
jerry_size_t sz = jerry_string_to_char_buffer (error_name, err_str_buf, err_str_size);
|
||||
jerry_release_value (error_name);
|
||||
|
||||
if (sz == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!strncmp ((char *) err_str_buf, syntax_error_str, sizeof (syntax_error_str) - 1))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
} /* jerry_value_is_syntax_error */
|
||||
|
||||
/**
|
||||
* Convert string into unsigned integer
|
||||
*
|
||||
@@ -222,7 +169,8 @@ print_unhandled_exception (jerry_value_t error_value, /**< error value */
|
||||
assert (sz == err_str_size);
|
||||
err_str_buf[err_str_size] = 0;
|
||||
|
||||
if (jerry_is_feature_enabled (JERRY_FEATURE_ERROR_MESSAGES) && jerry_value_is_syntax_error (error_value))
|
||||
if (jerry_is_feature_enabled (JERRY_FEATURE_ERROR_MESSAGES)
|
||||
&& jerry_get_error_type (error_value) == JERRY_ERROR_SYNTAX)
|
||||
{
|
||||
uint32_t err_line = 0;
|
||||
uint32_t err_col = 0;
|
||||
|
||||
Reference in New Issue
Block a user