Add a callback which is called when Error objects are created (#4465)
JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
@@ -314,8 +314,8 @@ static_snapshot_error_unsupported_literal (snapshot_globals_t *globals_p, /**< s
|
||||
|
||||
ecma_deref_ecma_string (literal_string_p);
|
||||
|
||||
ecma_object_t *error_object_p = ecma_new_standard_error_with_message (ECMA_ERROR_RANGE,
|
||||
ecma_stringbuilder_finalize (&builder));
|
||||
ecma_object_t *error_object_p = ecma_new_standard_error (ECMA_ERROR_RANGE,
|
||||
ecma_stringbuilder_finalize (&builder));
|
||||
|
||||
globals_p->snapshot_error = ecma_create_error_object_reference (error_object_p);
|
||||
} /* static_snapshot_error_unsupported_literal */
|
||||
|
||||
+17
-3
@@ -1601,6 +1601,20 @@ jerry_get_value_from_error (jerry_value_t value, /**< api value */
|
||||
return ret_val;
|
||||
} /* jerry_get_value_from_error */
|
||||
|
||||
/**
|
||||
* Set new decorator callback for Error objects. The decorator can
|
||||
* create or update any properties of the newly created Error object.
|
||||
*/
|
||||
void
|
||||
jerry_set_error_object_created_callback (jerry_error_object_created_callback_t callback, /**< new callback */
|
||||
void *user_p) /**< user pointer passed to the callback */
|
||||
{
|
||||
jerry_assert_api_available ();
|
||||
|
||||
JERRY_CONTEXT (error_object_created_callback_p) = callback;
|
||||
JERRY_CONTEXT (error_object_created_callback_user_p) = user_p;
|
||||
} /* jerry_set_error_object_created_callback */
|
||||
|
||||
/**
|
||||
* Return the type of the Error object if possible.
|
||||
*
|
||||
@@ -1990,15 +2004,15 @@ jerry_create_error_sz (jerry_error_t error_type, /**< type of error */
|
||||
|
||||
if (message_p == NULL || message_size == 0)
|
||||
{
|
||||
return ecma_create_error_object_reference (ecma_new_standard_error ((ecma_standard_error_t) error_type));
|
||||
return ecma_create_error_object_reference (ecma_new_standard_error ((ecma_standard_error_t) error_type, NULL));
|
||||
}
|
||||
else
|
||||
{
|
||||
ecma_string_t *message_string_p = ecma_new_ecma_string_from_utf8 ((lit_utf8_byte_t *) message_p,
|
||||
(lit_utf8_size_t) message_size);
|
||||
|
||||
ecma_object_t *error_object_p = ecma_new_standard_error_with_message ((ecma_standard_error_t) error_type,
|
||||
message_string_p);
|
||||
ecma_object_t *error_object_p = ecma_new_standard_error ((ecma_standard_error_t) error_type,
|
||||
message_string_p);
|
||||
|
||||
ecma_deref_ecma_string (message_string_p);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user