diff --git a/spec.html b/spec.html
index a0dba39a37a..1502f1fbd44 100644
--- a/spec.html
+++ b/spec.html
@@ -2951,7 +2951,7 @@
|
- [[Set]]
+ [[Setter]]
|
~accessor~
@@ -6807,8 +6807,8 @@
1. If _entry_.[[Kind]] is either ~field~ or ~method~, then
1. Return _entry_.[[Value]].
1. Assert: _entry_.[[Kind]] is ~accessor~.
- 1. If _entry_.[[Get]] is *undefined*, throw a *TypeError* exception.
- 1. Let _getter_ be _entry_.[[Get]].
+ 1. If _entry_.[[Getter]] is *undefined*, throw a *TypeError* exception.
+ 1. Let _getter_ be _entry_.[[Getter]].
1. Return ? Call(_getter_, _obj_).
@@ -6831,8 +6831,8 @@
1. Set _entry_.[[Value]] to _value_.
1. Else,
1. Assert: _entry_.[[Kind]] is ~accessor~.
- 1. If _entry_.[[Set]] is *undefined*, throw a *TypeError* exception.
- 1. Let _setter_ be _entry_.[[Set]].
+ 1. If _entry_.[[Setter]] is *undefined*, throw a *TypeError* exception.
+ 1. Let _setter_ be _entry_.[[Setter]].
1. Perform ? Call(_setter_, _obj_, « _value_ »).
1. Return ~unused~.
@@ -13181,8 +13181,8 @@
1. Set _propertyDesc_.[[Writable]] to the value of _ownProperty_'s [[Writable]] attribute.
1. Else,
1. Assert: _ownProperty_ is an accessor property.
- 1. Set _propertyDesc_.[[Get]] to the value of _ownProperty_'s [[Get]] attribute.
- 1. Set _propertyDesc_.[[Set]] to the value of _ownProperty_'s [[Set]] attribute.
+ 1. Set _propertyDesc_.[[Getter]] to the value of _ownProperty_'s [[Getter]] attribute.
+ 1. Set _propertyDesc_.[[Setter]] to the value of _ownProperty_'s [[Setter]] attribute.
1. Set _propertyDesc_.[[Enumerable]] to the value of _ownProperty_'s [[Enumerable]] attribute.
1. Set _propertyDesc_.[[Configurable]] to the value of _ownProperty_'s [[Configurable]] attribute.
1. Return _propertyDesc_.
@@ -13257,7 +13257,7 @@
1. If _extensible_ is *false*, return *false*.
1. If _obj_ is *undefined*, return *true*.
1. If IsAccessorDescriptor(_propertyDesc_) is *true*, then
- 1. Create an own accessor property named _propertyKey_ of object _obj_ whose [[Get]], [[Set]], [[Enumerable]], and [[Configurable]] attributes are set to the value of the corresponding field in _propertyDesc_ if _propertyDesc_ has that field, or to the attribute's default value otherwise.
+ 1. Create an own accessor property named _propertyKey_ of object _obj_ whose [[Getter]], [[Setter]], [[Enumerable]], and [[Configurable]] attributes are set to the value of the corresponding field in _propertyDesc_ if _propertyDesc_ has that field, or to the attribute's default value otherwise.
1. Else,
1. Create an own data property named _propertyKey_ of object _obj_ whose [[Value]], [[Writable]], [[Enumerable]], and [[Configurable]] attributes are set to the value of the corresponding field in _propertyDesc_ if _propertyDesc_ has that field, or to the attribute's default value otherwise.
1. Return *true*.
@@ -13268,8 +13268,8 @@
1. If _propertyDesc_ has an [[Enumerable]] field and _propertyDesc_.[[Enumerable]] is not _current_.[[Enumerable]], return *false*.
1. If IsGenericDescriptor(_propertyDesc_) is *false* and IsAccessorDescriptor(_propertyDesc_) is not IsAccessorDescriptor(_current_), return *false*.
1. If IsAccessorDescriptor(_current_) is *true*, then
- 1. If _propertyDesc_ has a [[Get]] field and SameValue(_propertyDesc_.[[Get]], _current_.[[Get]]) is *false*, return *false*.
- 1. If _propertyDesc_ has a [[Set]] field and SameValue(_propertyDesc_.[[Set]], _current_.[[Set]]) is *false*, return *false*.
+ 1. If _propertyDesc_ has a [[Getter]] field and SameValue(_propertyDesc_.[[Getter]], _current_.[[Getter]]) is *false*, return *false*.
+ 1. If _propertyDesc_ has a [[Setter]] field and SameValue(_propertyDesc_.[[Setter]], _current_.[[Setter]]) is *false*, return *false*.
1. Else if _current_.[[Writable]] is *false*, then
1. If _propertyDesc_ has a [[Writable]] field and _propertyDesc_.[[Writable]] is *true*, return *false*.
1. NOTE: SameValue returns *true* for *NaN* values which may be distinguishable by other means. Returning here ensures that any existing property of _obj_ remains unmodified.
@@ -13278,7 +13278,7 @@
1. If IsDataDescriptor(_current_) is *true* and IsAccessorDescriptor(_propertyDesc_) is *true*, then
1. If _propertyDesc_ has a [[Configurable]] field, let _configurable_ be _propertyDesc_.[[Configurable]]; else let _configurable_ be _current_.[[Configurable]].
1. If _propertyDesc_ has an [[Enumerable]] field, let _enumerable_ be _propertyDesc_.[[Enumerable]]; else let _enumerable_ be _current_.[[Enumerable]].
- 1. Replace the property named _propertyKey_ of object _obj_ with an accessor property whose [[Configurable]] and [[Enumerable]] attributes are set to _configurable_ and _enumerable_, respectively, and whose [[Get]] and [[Set]] attributes are set to the value of the corresponding field in _propertyDesc_ if _propertyDesc_ has that field, or to the attribute's default value otherwise.
+ 1. Replace the property named _propertyKey_ of object _obj_ with an accessor property whose [[Configurable]] and [[Enumerable]] attributes are set to _configurable_ and _enumerable_, respectively, and whose [[Getter]] and [[Setter]] attributes are set to the value of the corresponding field in _propertyDesc_ if _propertyDesc_ has that field, or to the attribute's default value otherwise.
1. Else if IsAccessorDescriptor(_current_) is *true* and IsDataDescriptor(_propertyDesc_) is *true*, then
1. If _propertyDesc_ has a [[Configurable]] field, let _configurable_ be _propertyDesc_.[[Configurable]]; else let _configurable_ be _current_.[[Configurable]].
1. If _propertyDesc_ has an [[Enumerable]] field, let _enumerable_ be _propertyDesc_.[[Enumerable]]; else let _enumerable_ be _current_.[[Enumerable]].
@@ -13359,7 +13359,7 @@
1. Return ? _parent_.[[Get]](_propertyKey_, _receiver_).
1. If IsDataDescriptor(_propertyDesc_) is *true*, return _propertyDesc_.[[Value]].
1. Assert: IsAccessorDescriptor(_propertyDesc_) is *true*.
- 1. Let _getter_ be _propertyDesc_.[[Get]].
+ 1. Let _getter_ be _propertyDesc_.[[Getter]].
1. If _getter_ is *undefined*, return *undefined*.
1. Return ? Call(_getter_, _receiver_).
@@ -13430,7 +13430,7 @@
1. Let _valueDesc_ be the PropertyDescriptor { [[Value]]: _value_ }.
1. Return ? _receiver_.[[DefineOwnProperty]](_propertyKey_, _valueDesc_).
1. Assert: IsAccessorDescriptor(_ownDesc_) is *true*.
- 1. Let _setter_ be _ownDesc_.[[Set]].
+ 1. Let _setter_ be _ownDesc_.[[Setter]].
1. If _setter_ is *undefined*, return *false*.
1. Perform ? Call(_setter_, _receiver_, « _value_ »).
1. Return *true*.
@@ -14044,8 +14044,8 @@
1. Assert: _realm_.[[Intrinsics]].[[%ThrowTypeError%]] exists and has been initialized.
1. Let _thrower_ be _realm_.[[Intrinsics]].[[%ThrowTypeError%]].
- 1. Perform ! DefinePropertyOrThrow(_func_, *"caller"*, PropertyDescriptor { [[Get]]: _thrower_, [[Set]]: _thrower_, [[Enumerable]]: *false*, [[Configurable]]: *true* }).
- 1. Perform ! DefinePropertyOrThrow(_func_, *"arguments"*, PropertyDescriptor { [[Get]]: _thrower_, [[Set]]: _thrower_, [[Enumerable]]: *false*, [[Configurable]]: *true* }).
+ 1. Perform ! DefinePropertyOrThrow(_func_, *"caller"*, PropertyDescriptor { [[Getter]]: _thrower_, [[Setter]]: _thrower_, [[Enumerable]]: *false*, [[Configurable]]: *true* }).
+ 1. Perform ! DefinePropertyOrThrow(_func_, *"arguments"*, PropertyDescriptor { [[Getter]]: _thrower_, [[Setter]]: _thrower_, [[Enumerable]]: *false*, [[Configurable]]: *true* }).
1. Return ~unused~.
@@ -15028,7 +15028,7 @@
1. Perform ! CreateDataPropertyOrThrow(_obj_, ! ToString(𝔽(_index_)), _value_).
1. Set _index_ to _index_ + 1.
1. Perform ! DefinePropertyOrThrow(_obj_, %Symbol.iterator%, PropertyDescriptor { [[Value]]: %Array.prototype.values%, [[Writable]]: *true*, [[Enumerable]]: *false*, [[Configurable]]: *true* }).
- 1. Perform ! DefinePropertyOrThrow(_obj_, *"callee"*, PropertyDescriptor { [[Get]]: %ThrowTypeError%, [[Set]]: %ThrowTypeError%, [[Enumerable]]: *false*, [[Configurable]]: *false* }).
+ 1. Perform ! DefinePropertyOrThrow(_obj_, *"callee"*, PropertyDescriptor { [[Getter]]: %ThrowTypeError%, [[Setter]]: %ThrowTypeError%, [[Enumerable]]: *false*, [[Configurable]]: *false* }).
1. Return _obj_.
@@ -15073,7 +15073,7 @@
1. If _index_ < _length_, then
1. Let _getter_ be MakeArgGetter(_name_, _envRecord_).
1. Let _setter_ be MakeArgSetter(_name_, _envRecord_).
- 1. Perform ! _map_.[[DefineOwnProperty]](! ToString(𝔽(_index_)), PropertyDescriptor { [[Set]]: _setter_, [[Get]]: _getter_, [[Enumerable]]: *false*, [[Configurable]]: *true* }).
+ 1. Perform ! _map_.[[DefineOwnProperty]](! ToString(𝔽(_index_)), PropertyDescriptor { [[Setter]]: _setter_, [[Getter]]: _getter_, [[Enumerable]]: *false*, [[Configurable]]: *true* }).
1. Set _index_ to _index_ - 1.
1. Perform ! DefinePropertyOrThrow(_obj_, %Symbol.iterator%, PropertyDescriptor { [[Value]]: %Array.prototype.values%, [[Writable]]: *true*, [[Enumerable]]: *false*, [[Configurable]]: *true* }).
1. Perform ! DefinePropertyOrThrow(_obj_, *"callee"*, PropertyDescriptor { [[Value]]: _func_, [[Writable]]: *true*, [[Enumerable]]: *false*, [[Configurable]]: *true* }).
@@ -16321,7 +16321,7 @@
1. If _targetDesc_ is not *undefined* and _targetDesc_.[[Configurable]] is *false*, then
1. If IsDataDescriptor(_targetDesc_) is *true* and _targetDesc_.[[Writable]] is *false*, then
1. If SameValue(_trapResult_, _targetDesc_.[[Value]]) is *false*, throw a *TypeError* exception.
- 1. If IsAccessorDescriptor(_targetDesc_) is *true* and _targetDesc_.[[Get]] is *undefined*, then
+ 1. If IsAccessorDescriptor(_targetDesc_) is *true* and _targetDesc_.[[Getter]] is *undefined*, then
1. If _trapResult_ is not *undefined*, throw a *TypeError* exception.
1. Return _trapResult_.
@@ -16332,7 +16332,7 @@
The value reported for a property must be the same as the value of the corresponding target object property if the target object property is a non-writable, non-configurable own data property.
- The value reported for a property must be *undefined* if the corresponding target object property is a non-configurable own accessor property that has *undefined* as its [[Get]] attribute.
+ The value reported for a property must be *undefined* if the corresponding target object property is a non-configurable own accessor property that has *undefined* as its [[Getter]] attribute.
@@ -16365,7 +16365,7 @@
1. If IsDataDescriptor(_targetDesc_) is *true* and _targetDesc_.[[Writable]] is *false*, then
1. If SameValue(_value_, _targetDesc_.[[Value]]) is *false*, throw a *TypeError* exception.
1. If IsAccessorDescriptor(_targetDesc_) is *true*, then
- 1. If _targetDesc_.[[Set]] is *undefined*, throw a *TypeError* exception.
+ 1. If _targetDesc_.[[Setter]] is *undefined*, throw a *TypeError* exception.
1. Return *true*.
@@ -16378,7 +16378,7 @@
Cannot change the value of a property to be different from the value of the corresponding target object property if the corresponding target object property is a non-writable, non-configurable own data property.
- Cannot set the value of a property if the corresponding target object property is a non-configurable own accessor property that has *undefined* as its [[Set]] attribute.
+ Cannot set the value of a property if the corresponding target object property is a non-configurable own accessor property that has *undefined* as its [[Setter]] attribute.
@@ -21313,7 +21313,7 @@ Runtime Semantics: Evaluation
1. Return _rightValue_.
- When this expression occurs within strict mode code, it is a runtime error if _leftRef_ in step , , , , is an unresolvable reference. If it is, a *ReferenceError* exception is thrown. Additionally, it is a runtime error if the _leftRef_ in step , , , is a reference to a data property with the attribute value { [[Writable]]: *false* }, to an accessor property with the attribute value { [[Set]]: *undefined* }, or to a non-existent property of an object for which the IsExtensible predicate returns the value *false*. In these cases a *TypeError* exception is thrown.
+ When this expression occurs within strict mode code, it is a runtime error if _leftRef_ in step , , , , is an unresolvable reference. If it is, a *ReferenceError* exception is thrown. Additionally, it is a runtime error if the _leftRef_ in step , , , is a reference to a data property with the attribute value { [[Writable]]: *false* }, to an accessor property with the attribute value { [[Setter]]: *undefined* }, or to a non-existent property of an object for which the IsExtensible predicate returns the value *false*. In these cases a *TypeError* exception is thrown.
@@ -24646,8 +24646,8 @@
1. Perform MakeMethod(_closure_, _obj_).
1. Perform SetFunctionName(_closure_, _propertyKey_, *"get"*).
1. If _propertyKey_ is a Private Name, then
- 1. Return PrivateElement { [[Key]]: _propertyKey_, [[Kind]]: ~accessor~, [[Get]]: _closure_, [[Set]]: *undefined* }.
- 1. Let _propertyDesc_ be the PropertyDescriptor { [[Get]]: _closure_, [[Enumerable]]: _enumerable_, [[Configurable]]: *true* }.
+ 1. Return PrivateElement { [[Key]]: _propertyKey_, [[Kind]]: ~accessor~, [[Getter]]: _closure_, [[Setter]]: *undefined* }.
+ 1. Let _propertyDesc_ be the PropertyDescriptor { [[Getter]]: _closure_, [[Enumerable]]: _enumerable_, [[Configurable]]: *true* }.
1. Perform ? DefinePropertyOrThrow(_obj_, _propertyKey_, _propertyDesc_).
1. Return ~unused~.
@@ -24661,8 +24661,8 @@
1. Perform MakeMethod(_closure_, _obj_).
1. Perform SetFunctionName(_closure_, _propertyKey_, *"set"*).
1. If _propertyKey_ is a Private Name, then
- 1. Return PrivateElement { [[Key]]: _propertyKey_, [[Kind]]: ~accessor~, [[Get]]: *undefined*, [[Set]]: _closure_ }.
- 1. Let _propertyDesc_ be the PropertyDescriptor { [[Set]]: _closure_, [[Enumerable]]: _enumerable_, [[Configurable]]: *true* }.
+ 1. Return PrivateElement { [[Key]]: _propertyKey_, [[Kind]]: ~accessor~, [[Getter]]: *undefined*, [[Setter]]: _closure_ }.
+ 1. Let _propertyDesc_ be the PropertyDescriptor { [[Setter]]: _closure_, [[Enumerable]]: _enumerable_, [[Configurable]]: *true* }.
1. Perform ? DefinePropertyOrThrow(_obj_, _propertyKey_, _propertyDesc_).
1. Return ~unused~.
@@ -25808,10 +25808,10 @@
1. Else, let _container_ be _staticPrivateMethods_.
1. If _container_ contains a PrivateElement _existingElement_ such that _existingElement_.[[Key]] is _element_.[[Key]], then
1. Assert: _element_.[[Kind]] and _existingElement_.[[Kind]] are both ~accessor~.
- 1. If _element_.[[Get]] is *undefined*, then
- 1. Let _combined_ be PrivateElement { [[Key]]: _element_.[[Key]], [[Kind]]: ~accessor~, [[Get]]: _existingElement_.[[Get]], [[Set]]: _element_.[[Set]] }.
+ 1. If _element_.[[Getter]] is *undefined*, then
+ 1. Let _combined_ be PrivateElement { [[Key]]: _element_.[[Key]], [[Kind]]: ~accessor~, [[Getter]]: _existingElement_.[[Getter]], [[Setter]]: _element_.[[Setter]] }.
1. Else,
- 1. Let _combined_ be PrivateElement { [[Key]]: _element_.[[Key]], [[Kind]]: ~accessor~, [[Get]]: _element_.[[Get]], [[Set]]: _existingElement_.[[Set]] }.
+ 1. Let _combined_ be PrivateElement { [[Key]]: _element_.[[Key]], [[Kind]]: ~accessor~, [[Getter]]: _element_.[[Getter]], [[Setter]]: _existingElement_.[[Setter]] }.
1. Replace _existingElement_ in _container_ with _combined_.
1. Else,
1. Append _element_ to _container_.
@@ -30310,7 +30310,7 @@ Forbidden Extensions
ECMAScript function objects defined using syntactic constructors in strict mode code must not be created with own properties named *"caller"* or *"arguments"*. Such own properties also must not be created for function objects defined using an |ArrowFunction|, |MethodDefinition|, |GeneratorDeclaration|, |GeneratorExpression|, |AsyncGeneratorDeclaration|, |AsyncGeneratorExpression|, |ClassDeclaration|, |ClassExpression|, |AsyncFunctionDeclaration|, |AsyncFunctionExpression|, or |AsyncArrowFunction| regardless of whether the definition is contained in strict mode code. Built-in functions, strict functions created using the Function constructor, generator functions created using the Generator constructor, async functions created using the AsyncFunction constructor, and functions created using the `bind` method also must not be created with such own properties.
- If an implementation extends any function object with an own property named *"caller"* the value of that property, as observed using [[Get]] or [[GetOwnProperty]], must not be a strict function object. If it is an accessor property, the function that is the value of the property's [[Get]] attribute must never return a strict function when called.
+ If an implementation extends any function object with an own property named *"caller"* the value of that property, as observed using [[Get]] or [[GetOwnProperty]], must not be a strict function object. If it is an accessor property, the function that is the value of the property's [[Getter]] attribute must never return a strict function when called.
Neither mapped nor unmapped arguments objects may be created with an own property named *"caller"*.
@@ -31632,11 +31632,11 @@ Object.prototype.valueOf ( )
Object.prototype.__proto__
- `Object.prototype.__proto__` is an accessor property with attributes { [[Enumerable]]: *false*, [[Configurable]]: *true* }. The [[Get]] and [[Set]] attributes are defined as follows:
+ `Object.prototype.__proto__` is an accessor property with attributes { [[Enumerable]]: *false*, [[Configurable]]: *true* }. The [[Getter]] and [[Setter]] attributes are defined as follows:
get Object.prototype.__proto__
- The value of the [[Get]] attribute is a built-in function that requires no arguments. It performs the following steps when called:
+ The value of the [[Getter]] attribute is a built-in function that requires no arguments. It performs the following steps when called:
1. Let _obj_ be ? ToObject(*this* value).
1. Return ? _obj_.[[GetPrototypeOf]]().
@@ -31645,7 +31645,7 @@ get Object.prototype.__proto__
set Object.prototype.__proto__
- The value of the [[Set]] attribute is a built-in function that takes an argument _proto_. It performs the following steps when called:
+ The value of the [[Setter]] attribute is a built-in function that takes an argument _proto_. It performs the following steps when called:
1. Let _thisValue_ be the *this* value.
1. Perform ? RequireObjectCoercible(_thisValue_).
@@ -31667,7 +31667,7 @@ Object.prototype.__defineGetter__ ( _key_, _getter_ )
1. Let _obj_ be ? ToObject(*this* value).
1. If IsCallable(_getter_) is *false*, throw a *TypeError* exception.
- 1. Let _propertyDesc_ be PropertyDescriptor { [[Get]]: _getter_, [[Enumerable]]: *true*, [[Configurable]]: *true* }.
+ 1. Let _propertyDesc_ be PropertyDescriptor { [[Getter]]: _getter_, [[Enumerable]]: *true*, [[Configurable]]: *true* }.
1. Let _propertyKey_ be ? ToPropertyKey(_key_).
1. Perform ? DefinePropertyOrThrow(_obj_, _propertyKey_, _propertyDesc_).
1. Return *undefined*.
@@ -31680,7 +31680,7 @@ Object.prototype.__defineSetter__ ( _key_, _setter_ )
1. Let _obj_ be ? ToObject(*this* value).
1. If IsCallable(_setter_) is *false*, throw a *TypeError* exception.
- 1. Let _propertyDesc_ be PropertyDescriptor { [[Set]]: _setter_, [[Enumerable]]: *true*, [[Configurable]]: *true* }.
+ 1. Let _propertyDesc_ be PropertyDescriptor { [[Setter]]: _setter_, [[Enumerable]]: *true*, [[Configurable]]: *true* }.
1. Let _propertyKey_ be ? ToPropertyKey(_key_).
1. Perform ? DefinePropertyOrThrow(_obj_, _propertyKey_, _propertyDesc_).
1. Return *undefined*.
@@ -31696,7 +31696,7 @@ Object.prototype.__lookupGetter__ ( _key_ )
1. Repeat,
1. Let _propertyDesc_ be ? _obj_.[[GetOwnProperty]](_propertyKey_).
1. If _propertyDesc_ is not *undefined*, then
- 1. If IsAccessorDescriptor(_propertyDesc_) is *true*, return _propertyDesc_.[[Get]].
+ 1. If IsAccessorDescriptor(_propertyDesc_) is *true*, return _propertyDesc_.[[Getter]].
1. Return *undefined*.
1. Set _obj_ to ? _obj_.[[GetPrototypeOf]]().
1. If _obj_ is *null*, return *undefined*.
@@ -31712,7 +31712,7 @@ Object.prototype.__lookupSetter__ ( _key_ )
1. Repeat,
1. Let _propertyDesc_ be ? _obj_.[[GetOwnProperty]](_propertyKey_).
1. If _propertyDesc_ is not *undefined*, then
- 1. If IsAccessorDescriptor(_propertyDesc_) is *true*, return _propertyDesc_.[[Set]].
+ 1. If IsAccessorDescriptor(_propertyDesc_) is *true*, return _propertyDesc_.[[Setter]].
1. Return *undefined*.
1. Set _obj_ to ? _obj_.[[GetPrototypeOf]]().
1. If _obj_ is *null*, return *undefined*.
@@ -49456,11 +49456,11 @@ Properties of the Iterator Prototype Object
Iterator.prototype.constructor
- `Iterator.prototype.constructor` is an accessor property with attributes { [[Enumerable]]: *false*, [[Configurable]]: *true* }. The [[Get]] and [[Set]] attributes are defined as follows:
+ `Iterator.prototype.constructor` is an accessor property with attributes { [[Enumerable]]: *false*, [[Configurable]]: *true* }. The [[Getter]] and [[Setter]] attributes are defined as follows:
get Iterator.prototype.constructor
- The value of the [[Get]] attribute is a built-in function that requires no arguments. It performs the following steps when called:
+ The value of the [[Getter]] attribute is a built-in function that requires no arguments. It performs the following steps when called:
1. Return %Iterator%.
@@ -49468,7 +49468,7 @@ get Iterator.prototype.constructor
set Iterator.prototype.constructor
- The value of the [[Set]] attribute is a built-in function that takes an argument _v_. It performs the following steps when called:
+ The value of the [[Setter]] attribute is a built-in function that takes an argument _v_. It performs the following steps when called:
1. Perform ? SetterThatIgnoresPrototypeProperties(*this* value, %Iterator.prototype%, *"constructor"*, _v_).
1. Return *undefined*.
@@ -49797,11 +49797,11 @@ Iterator.prototype [ %Symbol.iterator% ] ( )
Iterator.prototype [ %Symbol.toStringTag% ]
- `Iterator.prototype[%Symbol.toStringTag%]` is an accessor property with attributes { [[Enumerable]]: *false*, [[Configurable]]: *true* }. The [[Get]] and [[Set]] attributes are defined as follows:
+ `Iterator.prototype[%Symbol.toStringTag%]` is an accessor property with attributes { [[Enumerable]]: *false*, [[Configurable]]: *true* }. The [[Getter]] and [[Setter]] attributes are defined as follows:
get Iterator.prototype [ %Symbol.toStringTag% ]
- The value of the [[Get]] attribute is a built-in function that requires no arguments. It performs the following steps when called:
+ The value of the [[Getter]] attribute is a built-in function that requires no arguments. It performs the following steps when called:
1. Return *"Iterator"*.
@@ -49809,7 +49809,7 @@ get Iterator.prototype [ %Symbol.toStringTag% ]
set Iterator.prototype [ %Symbol.toStringTag% ]
- The value of the [[Set]] attribute is a built-in function that takes an argument _v_. It performs the following steps when called:
+ The value of the [[Setter]] attribute is a built-in function that takes an argument _v_. It performs the following steps when called:
1. Perform ? SetterThatIgnoresPrototypeProperties(*this* value, %Iterator.prototype%, %Symbol.toStringTag%, _v_).
1. Return *undefined*.
@@ -54980,7 +54980,7 @@ The Strict Mode of ECMAScript
A conforming implementation, when processing strict mode code, must disallow instances of the productions EscapeSequence :: LegacyOctalEscapeSequence and EscapeSequence :: NonOctalDecimalEscapeSequence.
- Assignment to an undeclared identifier or otherwise unresolvable reference does not create a property in the global object. When a simple assignment occurs within strict mode code, its |LeftHandSideExpression| must not evaluate to an unresolvable Reference. If it does a *ReferenceError* exception is thrown (). The |LeftHandSideExpression| also may not be a reference to a data property with the attribute value { [[Writable]]: *false* }, to an accessor property with the attribute value { [[Set]]: *undefined* }, nor to a non-existent property of an object whose [[Extensible]] internal slot is *false*. In these cases a `TypeError` exception is thrown ().
+ Assignment to an undeclared identifier or otherwise unresolvable reference does not create a property in the global object. When a simple assignment occurs within strict mode code, its |LeftHandSideExpression| must not evaluate to an unresolvable Reference. If it does a *ReferenceError* exception is thrown (). The |LeftHandSideExpression| also may not be a reference to a data property with the attribute value { [[Writable]]: *false* }, to an accessor property with the attribute value { [[Setter]]: *undefined* }, nor to a non-existent property of an object whose [[Extensible]] internal slot is *false*. In these cases a `TypeError` exception is thrown ().
An |IdentifierReference| with the StringValue *"eval"* or *"arguments"* may not appear as the |LeftHandSideExpression| of an Assignment operator () or of an |UpdateExpression| () or as the |UnaryExpression| operated upon by a Prefix Increment () or a Prefix Decrement () operator.
@@ -55113,7 +55113,7 @@ Additions and Changes That Introduce Incompatibilities with Prior Editions
: In ECMAScript 2015, it is an early error for a |Catch| clause to contain a `var` declaration for the same |Identifier| that appears as the |Catch| clause parameter. In previous editions, such a variable declaration would be instantiated in the enclosing variable environment but the declaration's |Initializer| value would be assigned to the |Catch| parameter.
, : In ECMAScript 2015, a runtime *SyntaxError* is thrown if a |Catch| clause evaluates a non-strict direct `eval` whose eval code includes a `var` or `FunctionDeclaration` declaration that binds the same |Identifier| that appears as the |Catch| clause parameter.
: In ECMAScript 2015, the result of a |TryStatement| is never the value ~empty~. If the |Block| part of a |TryStatement| evaluates to a normal completion containing ~empty~, the result of the |TryStatement| is *undefined*. If the |Block| part of a |TryStatement| evaluates to a throw completion and it has a |Catch| part that evaluates to a normal completion containing ~empty~, the result of the |TryStatement| is *undefined* if there is no |Finally| clause or if its |Finally| clause evaluates to an ~empty~ normal completion.
- In ECMAScript 2015, the function objects that are created as the values of the [[Get]] or [[Set]] attribute of accessor properties in an |ObjectLiteral| are not constructor functions and they do not have a *"prototype"* own property. In the previous edition, they were constructors and had a *"prototype"* property.
+ In ECMAScript 2015, the function objects that are created as the values of the [[Getter]] or [[Setter]] attribute of accessor properties in an |ObjectLiteral| are not constructor functions and they do not have a *"prototype"* own property. In the previous edition, they were constructors and had a *"prototype"* property.
: In ECMAScript 2015, if the argument to `Object.freeze` is not an object it is treated as if it was a non-extensible ordinary object with no own properties. In the previous edition, a non-object argument always causes a *TypeError* to be thrown.
: In ECMAScript 2015, if the argument to `Object.getOwnPropertyDescriptor` is not an object an attempt is made to coerce the argument using ToObject. If the coercion is successful the result is used in place of the original argument value. In the previous edition, a non-object argument always causes a *TypeError* to be thrown.
: In ECMAScript 2015, if the argument to `Object.getOwnPropertyNames` is not an object an attempt is made to coerce the argument using ToObject. If the coercion is successful the result is used in place of the original argument value. In the previous edition, a non-object argument always causes a *TypeError* to be thrown.
|