From 800031c62b2dd455e3c6e5793e5e0a3534e10215 Mon Sep 17 00:00:00 2001 From: Gergo Csizi <56910451+gergocs@users.noreply.github.com> Date: Wed, 26 May 2021 04:54:26 +0000 Subject: [PATCH] Change jerry_get_own_property_descriptor return type (#4675) JerryScript-DCO-1.0-Signed-off-by: Gergo Csizi csgergo92@gmail.com --- docs/02.API-REFERENCE.md | 4 +++- jerry-core/api/jerry.c | 11 +++++------ jerry-core/include/jerryscript-core.h | 6 +++--- tests/unit-core/test-api-property.c | 11 +++++++---- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/docs/02.API-REFERENCE.md b/docs/02.API-REFERENCE.md index b2cf06094..993054060 100644 --- a/docs/02.API-REFERENCE.md +++ b/docs/02.API-REFERENCE.md @@ -8475,7 +8475,7 @@ Construct property descriptor from specified property. **Prototype** ```c -bool +jerry_value_t jerry_get_own_property_descriptor (const jerry_value_t obj_val, const jerry_value_t prop_name_val, jerry_property_descriptor_t *prop_desc_p); @@ -8486,6 +8486,8 @@ jerry_get_own_property_descriptor (const jerry_value_t obj_val, - `prop_desc_p` - pointer to property descriptor - return value +*Changed in version [[NEXT_RELEASE]]*: return value is changed to `jerry_value_t` + **Example** ```c diff --git a/jerry-core/api/jerry.c b/jerry-core/api/jerry.c index 8678a34fd..09d538c1a 100644 --- a/jerry-core/api/jerry.c +++ b/jerry-core/api/jerry.c @@ -3830,7 +3830,7 @@ jerry_define_own_property (const jerry_value_t obj_val, /**< object value */ * @return true - if success, the prop_desc_p fields contains the property info * false - otherwise, the prop_desc_p is unchanged */ -bool +jerry_value_t jerry_get_own_property_descriptor (const jerry_value_t obj_val, /**< object value */ const jerry_value_t prop_name_val, /**< property name (string value) */ jerry_property_descriptor_t *prop_desc_p) /**< property descriptor */ @@ -3840,7 +3840,7 @@ jerry_get_own_property_descriptor (const jerry_value_t obj_val, /**< object val if (!ecma_is_value_object (obj_val) || !ecma_is_value_prop_name (prop_name_val)) { - return false; + return ECMA_VALUE_FALSE; } ecma_property_descriptor_t prop_desc; @@ -3852,14 +3852,13 @@ jerry_get_own_property_descriptor (const jerry_value_t obj_val, /**< object val #if JERRY_BUILTIN_PROXY if (ECMA_IS_VALUE_ERROR (status)) { - // TODO: Due to Proxies the return value must be changed to jerry_value_t on next release - jcontext_release_exception (); + return jerry_throw (status); } #endif /* JERRY_BUILTIN_PROXY */ if (!ecma_is_value_true (status)) { - return false; + return ECMA_VALUE_FALSE; } /* The flags are always filled in the returned descriptor. */ @@ -3902,7 +3901,7 @@ jerry_get_own_property_descriptor (const jerry_value_t obj_val, /**< object val } } - return true; + return ECMA_VALUE_TRUE; } /* jerry_get_own_property_descriptor */ /** diff --git a/jerry-core/include/jerryscript-core.h b/jerry-core/include/jerryscript-core.h index 433aec6c3..adbfd604f 100644 --- a/jerry-core/include/jerryscript-core.h +++ b/jerry-core/include/jerryscript-core.h @@ -225,9 +225,9 @@ jerry_value_t jerry_define_own_property (const jerry_value_t obj_val, const jerry_value_t prop_name_val, const jerry_property_descriptor_t *prop_desc_p); -bool jerry_get_own_property_descriptor (const jerry_value_t obj_val, - const jerry_value_t prop_name_val, - jerry_property_descriptor_t *prop_desc_p); +jerry_value_t jerry_get_own_property_descriptor (const jerry_value_t obj_val, + const jerry_value_t prop_name_val, + jerry_property_descriptor_t *prop_desc_p); void jerry_property_descriptor_free (const jerry_property_descriptor_t *prop_desc_p); jerry_value_t jerry_call_function (const jerry_value_t func_obj_val, const jerry_value_t this_val, diff --git a/tests/unit-core/test-api-property.c b/tests/unit-core/test-api-property.c index a7422237b..670923f2a 100644 --- a/tests/unit-core/test-api-property.c +++ b/tests/unit-core/test-api-property.c @@ -63,8 +63,9 @@ main (void) /* Test: get own property descriptor */ prop_desc = jerry_property_descriptor_create (); - bool is_ok = jerry_get_own_property_descriptor (global_obj_val, prop_name, &prop_desc); - TEST_ASSERT (is_ok); + jerry_value_t is_ok = jerry_get_own_property_descriptor (global_obj_val, prop_name, &prop_desc); + TEST_ASSERT (jerry_value_is_boolean (is_ok) && jerry_get_boolean_value (is_ok)); + jerry_release_value (is_ok); TEST_ASSERT (prop_desc.flags & JERRY_PROP_IS_VALUE_DEFINED); TEST_ASSERT (jerry_value_is_string (prop_desc.value)); TEST_ASSERT (!(prop_desc.flags & JERRY_PROP_IS_WRITABLE)); @@ -86,7 +87,8 @@ main (void) jerry_release_value (target); jerry_release_value (handler); is_ok = jerry_get_own_property_descriptor (proxy, prop_name, &prop_desc); - TEST_ASSERT (!is_ok); + TEST_ASSERT (jerry_value_is_boolean (is_ok) && !jerry_get_boolean_value (is_ok)); + jerry_release_value (is_ok); jerry_release_value (proxy); } @@ -102,7 +104,8 @@ main (void) jerry_release_value (res); jerry_property_descriptor_free (&prop_desc); is_ok = jerry_get_own_property_descriptor (global_obj_val, prop_name, &prop_desc); - TEST_ASSERT (is_ok); + TEST_ASSERT (jerry_value_is_boolean (is_ok) && jerry_get_boolean_value (is_ok)); + jerry_release_value (is_ok); TEST_ASSERT (!(prop_desc.flags & JERRY_PROP_IS_WRITABLE)); TEST_ASSERT (prop_desc.flags & JERRY_PROP_IS_ENUMERABLE); TEST_ASSERT (!(prop_desc.flags & JERRY_PROP_IS_CONFIGURABLE));