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:
@@ -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 */
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user