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