mirror of
https://github.com/jerryscript-project/jerryscript.git
synced 2025-12-15 16:29:21 +00:00
Remove arguments and caller properties from ArrowFunction (#3906)
As stated in ES11 16.1, ArrowFunction should not have caller and arguments properties. JerryScript-DCO-1.0-Signed-off-by: Rafal Walczyna r.walczyna@samsung.com
This commit is contained in:
parent
cc4ac497b7
commit
5bcb78482a
@ -1530,10 +1530,11 @@ ecma_op_function_try_to_lazy_instantiate_property (ecma_object_t *object_p, /**<
|
||||
bytecode_data_p = ecma_op_function_get_compiled_code ((ecma_extended_object_t *) object_p);
|
||||
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
if (!(bytecode_data_p->status_flags & CBC_CODE_FLAGS_STRICT_MODE))
|
||||
if (!(bytecode_data_p->status_flags & CBC_CODE_FLAGS_STRICT_MODE)
|
||||
&& !(CBC_FUNCTION_GET_TYPE (bytecode_data_p->status_flags) == CBC_FUNCTION_ARROW))
|
||||
{
|
||||
ecma_property_t *value_prop_p;
|
||||
/* The property_name_p argument contans the name. */
|
||||
/* The property_name_p argument contains the name. */
|
||||
ecma_property_value_t *value_p = ecma_create_named_data_property (object_p,
|
||||
property_name_p,
|
||||
ECMA_PROPERTY_FIXED,
|
||||
@ -1547,7 +1548,7 @@ ecma_op_function_try_to_lazy_instantiate_property (ecma_object_t *object_p, /**<
|
||||
ecma_object_t *thrower_p = ecma_builtin_get (ECMA_BUILTIN_ID_TYPE_ERROR_THROWER);
|
||||
|
||||
ecma_property_t *caller_prop_p;
|
||||
/* The property_name_p argument contans the name. */
|
||||
/* The property_name_p argument contains the name. */
|
||||
ecma_create_named_accessor_property (object_p,
|
||||
property_name_p,
|
||||
thrower_p,
|
||||
|
||||
@ -184,3 +184,13 @@ assert(f()()() === 7);
|
||||
|
||||
var f = (((a=1,b=2) => ((x => (((a) => 8))))));
|
||||
assert(f()()() === 8);
|
||||
|
||||
var f = () => {};
|
||||
|
||||
assert(f.hasOwnProperty('caller') === false);
|
||||
assert(f.hasOwnProperty('arguments') === false);
|
||||
|
||||
must_throw("var f = () => {}; f.caller")
|
||||
must_throw("var f = () => {}; f.arguments")
|
||||
must_throw("var f = () => {}; f.caller = 1")
|
||||
must_throw("var f = () => {}; f.arguments = 2")
|
||||
|
||||
@ -330,7 +330,6 @@
|
||||
<test id="language/computed-property-names/object/accessor/setter-super.js"><reason></reason></test>
|
||||
<test id="language/computed-property-names/object/method/super.js"><reason></reason></test>
|
||||
<test id="language/default-parameters/function-length.js"><reason></reason></test>
|
||||
<test id="language/expressions/arrow-function/ArrowFunction_restricted-properties.js"><reason></reason></test>
|
||||
<test id="language/expressions/arrow-function/lexical-super-call-from-within-constructor.js"><reason></reason></test>
|
||||
<test id="language/expressions/assignment/destructuring/array-rest-init.js"><reason></reason></test>
|
||||
<test id="language/expressions/assignment/destructuring/obj-prop-elem-target-yield-expr.js"><reason></reason></test>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user