mirror of https://github.com/tc39/test262.git
Test to block legacy hoisting for `function arguments() {}` (#970)
Ref https://github.com/tc39/ecma262/issues/815 Ref https://github.com/tc39/ecma262/pull/889 This is testing the current semantics of the specs, rather than the semantics in the proposed referenced issue.
This commit is contained in:
parent
a621155bcd
commit
89e15ce814
|
@ -0,0 +1,54 @@
|
||||||
|
/*---
|
||||||
|
description: Functions named 'arguments' have legacy hoisting semantics
|
||||||
|
esid: sec-web-compat-functiondeclarationinstantiation
|
||||||
|
flags: [noStrict]
|
||||||
|
info: |
|
||||||
|
FunctionDeclarationInstantiation ( _func_, _argumentsList_ )
|
||||||
|
|
||||||
|
[...]
|
||||||
|
7. Let _parameterNames_ be the BoundNames of _formals_.
|
||||||
|
[...]
|
||||||
|
22. If argumentsObjectNeeded is true, then
|
||||||
|
f. Append "arguments" to parameterNames.
|
||||||
|
|
||||||
|
Changes to FunctionDeclarationInstantiation
|
||||||
|
|
||||||
|
[...]
|
||||||
|
ii. If replacing the |FunctionDeclaration| _f_ with a |VariableStatement| that has _F_
|
||||||
|
as a |BindingIdentifier| would not produce any Early Errors for _func_ and _F_ is
|
||||||
|
not an element of _parameterNames_, then
|
||||||
|
[...]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
// Simple parameters
|
||||||
|
(function() {
|
||||||
|
assert.sameValue(arguments.toString(), "[object Arguments]");
|
||||||
|
{
|
||||||
|
assert.sameValue(arguments(), undefined);
|
||||||
|
function arguments() {}
|
||||||
|
assert.sameValue(arguments(), undefined);
|
||||||
|
}
|
||||||
|
assert.sameValue(arguments.toString(), "[object Arguments]");
|
||||||
|
}());
|
||||||
|
|
||||||
|
// Single named parameter
|
||||||
|
(function(x) {
|
||||||
|
assert.sameValue(arguments.toString(), "[object Arguments]");
|
||||||
|
{
|
||||||
|
assert.sameValue(arguments(), undefined);
|
||||||
|
function arguments() {}
|
||||||
|
assert.sameValue(arguments(), undefined);
|
||||||
|
}
|
||||||
|
assert.sameValue(arguments.toString(), "[object Arguments]");
|
||||||
|
}());
|
||||||
|
|
||||||
|
// Non-simple parameters
|
||||||
|
(function(..._) {
|
||||||
|
assert.sameValue(arguments.toString(), "[object Arguments]");
|
||||||
|
{
|
||||||
|
assert.sameValue(arguments(), undefined);
|
||||||
|
function arguments() {}
|
||||||
|
assert.sameValue(arguments(), undefined);
|
||||||
|
}
|
||||||
|
assert.sameValue(arguments.toString(), "[object Arguments]");
|
||||||
|
}());
|
Loading…
Reference in New Issue