Skip to content
Snippets Groups Projects
Commit 89e15ce8 authored by Daniel Ehrenberg's avatar Daniel Ehrenberg Committed by Leo Balter
Browse files

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.
parent a621155b
No related branches found
No related tags found
No related merge requests found
/*---
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]");
}());
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment