mirror of https://github.com/tc39/test262.git
55 lines
1.6 KiB
JavaScript
55 lines
1.6 KiB
JavaScript
|
/*---
|
||
|
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]");
|
||
|
}());
|