Propagate strict mode for Proxy targets during delete (#4273)

After ES5.1 if the delete returns false a TypeError should be thrown
in strict mode.

JerryScript-DCO-1.0-Signed-off-by: Peter Gal pgal.usz@partner.samsung.com
This commit is contained in:
Péter Gál
2020-10-08 10:00:47 +02:00
committed by GitHub
parent c905c21abb
commit 4df833e7ad
5 changed files with 16 additions and 10 deletions
@@ -1314,7 +1314,8 @@ ecma_proxy_object_set (ecma_object_t *obj_p, /**< proxy object */
*/
ecma_value_t
ecma_proxy_object_delete_property (ecma_object_t *obj_p, /**< proxy object */
ecma_string_t *prop_name_p) /**< property name */
ecma_string_t *prop_name_p, /**< property name */
bool is_strict) /**< delete in strict mode? */
{
JERRY_ASSERT (ECMA_OBJECT_IS_PROXY (obj_p));
@@ -1338,7 +1339,7 @@ ecma_proxy_object_delete_property (ecma_object_t *obj_p, /**< proxy object */
/* 8. */
if (ecma_is_value_undefined (trap))
{
return ecma_op_object_delete (target_obj_p, prop_name_p, false);
return ecma_op_object_delete (target_obj_p, prop_name_p, is_strict);
}
ecma_object_t *func_obj_p = ecma_get_object_from_value (trap);