mirror of https://github.com/tc39/test262.git
58 lines
1.7 KiB
JavaScript
58 lines
1.7 KiB
JavaScript
// Copyright (C) 2017 the V8 project authors. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
|
|
/*---
|
|
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]");
|
|
}());
|