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:
Zoltan Herczeg
2021-01-18 16:56:38 +01:00
committed by GitHub
parent e00964176d
commit 3b77117a2e
14 changed files with 249 additions and 51 deletions
+2 -2
View File
@@ -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
View File
@@ -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);