Add missing error support for API functions. (#4153)

JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
Zoltan Herczeg
2020-08-19 11:13:08 +02:00
committed by GitHub
parent b828d1c15f
commit 5b3f01af9d
3 changed files with 52 additions and 5 deletions
+5 -5
View File
@@ -2186,8 +2186,8 @@ jerry_has_property (const jerry_value_t obj_val, /**< object value */
return ECMA_VALUE_FALSE;
}
return ecma_op_object_has_property (ecma_get_object_from_value (obj_val),
ecma_get_prop_name_from_value (prop_name_val));
return jerry_return (ecma_op_object_has_property (ecma_get_object_from_value (obj_val),
ecma_get_prop_name_from_value (prop_name_val)));
} /* jerry_has_property */
/**
@@ -2750,9 +2750,9 @@ jerry_define_own_property (const jerry_value_t obj_val, /**< object value */
prop_desc.flags |= (uint16_t) (flags | ECMA_PROP_IS_THROW);
return ecma_op_object_define_own_property (ecma_get_object_from_value (obj_val),
ecma_get_prop_name_from_value (prop_name_val),
&prop_desc);
return jerry_return (ecma_op_object_define_own_property (ecma_get_object_from_value (obj_val),
ecma_get_prop_name_from_value (prop_name_val),
&prop_desc));
} /* jerry_define_own_property */
/**
+20
View File
@@ -100,6 +100,26 @@ main (void)
jerry_release_value (prop_name);
jerry_release_value (global_obj_val);
/* Test: define own property descriptor error */
jerry_init_property_descriptor_fields (&prop_desc);
prop_desc.is_value_defined = true;
prop_desc.value = jerry_create_number (11);
jerry_value_t obj_val = jerry_create_object ();
prop_name = jerry_create_string ((const jerry_char_t *) "property_key");
res = jerry_define_own_property (obj_val, prop_name, &prop_desc);
TEST_ASSERT (!jerry_value_is_error (res));
jerry_release_value (res);
jerry_release_value (prop_desc.value);
prop_desc.value = jerry_create_number (22);
res = jerry_define_own_property (obj_val, prop_name, &prop_desc);
TEST_ASSERT (jerry_value_is_error (res));
jerry_release_value (res);
jerry_release_value (prop_name);
jerry_release_value (obj_val);
jerry_cleanup ();
return 0;
+27
View File
@@ -245,6 +245,33 @@ main (void)
jerry_release_value (target);
jerry_release_value (handler);
{
const jerry_char_t has_value_src[] = TEST_STRING_LITERAL ("new Proxy({}, {\n"
" has: function(target, key) { throw 33 }\n"
"})");
jerry_value_t parsed_has_code_val = jerry_parse (NULL,
0,
has_value_src,
sizeof (has_value_src) - 1,
JERRY_PARSE_NO_OPTS);
TEST_ASSERT (!jerry_value_is_error (parsed_has_code_val));
jerry_value_t res = jerry_run (parsed_has_code_val);
jerry_release_value (parsed_has_code_val);
TEST_ASSERT (jerry_value_is_proxy (res));
jerry_value_t name = jerry_create_string ((const jerry_char_t *) "key");
TEST_ASSERT (jerry_value_is_string (name));
jerry_value_t property = jerry_has_property (res, name);
jerry_release_value (name);
jerry_release_value (res);
TEST_ASSERT (jerry_value_is_error (property));
property = jerry_get_value_from_error (property, true);
TEST_ASSERT (jerry_get_number_value (property) == 33);
jerry_release_value (property);
}
jerry_cleanup ();
return 0;
} /* main */