Bug 158116 - Own "arguments" and "caller" properties of non-strict functions don't observe the invariability of nonconfigurable, nonwritable properties
Summary: Own "arguments" and "caller" properties of non-strict functions don't observe...
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-05-26 05:09 PDT by Claude Pache
Modified: 2016-07-07 15:16 PDT (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Claude Pache 2016-05-26 05:09:24 PDT
According to [ES6 6.7.1.3] Invariants of the Essential Internal Methods:


     If a property P is described as a data property with Desc.[[Value]] equal to v and Desc.[[Writable]] and Desc.[[Configurable]] are both false, then the SameValue must be returned for the Desc.[[Value]] attribute of the property on all future calls to [[GetOwnProperty]] ( P ).

[ES6 6.7.1.3]: http://www.ecma-international.org/ecma-262/6.0/#sec-invariants-of-the-essential-internal-methods


Testcase against `Function#arguments`

```js
function f() { return Object.getOwnPropertyDescriptor(f, 'arguments'); }
Object.getOwnPropertyDescriptor(f, 'arguments');
// value: null, writable: false, configurable: false
f();
// value: Arguments[], writable: false, configurable: false
```


Testcase against `Function#caller`

```js
function g() { return Object.getOwnPropertyDescriptor(g, 'caller'); }
function h() { return g(); }
Object.getOwnPropertyDescriptor(g, 'caller');
// value: null, writable: false, configurable: false
h();
// value: function h(), writable: false, configurable: false
```


Suggested fix: Use getters.


Similar bug: Bug 151348