13.0-7-s.js |
---
info: |
Refer 13;
The production FunctionBody : SourceElementsopt is evaluated as follows:
es5id: 13.0-7-s
description: >
Strict Mode - SourceElements is evaluated as strict mode code when
the code of this FunctionDeclaration is contained in non-strict
mode but the call to eval is a direct call in strict mode code
flags: [noStrict]
--- |
653 |
13.0-8-s-strict.js |
---
info: |
Refer 13;
The production FunctionBody : SourceElementsopt is evaluated as follows:
es5id: 13.0-8-s
description: >
Strict Mode - SourceElements is evaluated as strict mode code when
the code of this FunctionExpression is contained in non-strict
mode but the call to eval is a direct call in strict mode code
flags: [onlyStrict]
--- |
661 |
13.0-12-s-strict.js |
---
info: |
Refer 13;
The production FunctionBody : SourceElementsopt is evaluated as follows:
es5id: 13.0-12-s
description: >
Strict Mode - SourceElements is not evaluated as strict mode code
when a Function constructor is contained in strict mode code and
the function constructor body is not strict
flags: [onlyStrict]
--- |
591 |
13.0-13-s.js |
---
info: |
Refer 13;
The production FunctionBody : SourceElementsopt is evaluated as follows:
es5id: 13.0-13-s
description: >
Strict Mode - SourceElements is evaluated as strict mode code when
the function body of a Function constructor begins with a Strict
Directive
flags: [noStrict]
--- |
618 |
13.0-14-s.js |
---
info: |
Refer 13;
The production FunctionBody : SourceElementsopt is evaluated as follows:
es5id: 13.0-14-s
description: >
Strict Mode - SourceElements is evaluated as strict mode code when
the function body of a Function constructor contains a Strict
Directive
flags: [noStrict]
--- |
607 |
13.0-15-s.js |
---
info: |
Refer 13;
The production FunctionBody : SourceElementsopt is evaluated as follows:
es5id: 13.0-15-s
description: >
Strict Mode - SourceElements is evaluated as strict mode code when
a FunctionDeclaration is contained in strict mode code within eval
code
flags: [noStrict]
--- |
601 |
13.0-16-s.js |
---
info: |
Refer 13;
The production FunctionBody : SourceElementsopt is evaluated as follows:
es5id: 13.0-16-s
description: >
Strict Mode - SourceElements is evaluated as strict mode code when
a FunctionExpression is contained in strict mode code within eval
code
flags: [noStrict]
--- |
608 |
13.0-17-s.js |
---
info: |
Refer 13;
The production FunctionBody : SourceElementsopt is evaluated as follows:
es5id: 13.0-17-s
description: >
Strict Mode - SourceElements is not evaluated as strict mode code
when a Function constructor is contained in strict mode code
within eval code
flags: [noStrict]
--- |
563 |
13.0_4-5gs-strict.js |
---
es5id: 13.0_4-5gs
description: >
Strict Mode - SourceElements is evaluated as strict mode code when
a FunctionDeclaration is contained in strict mode code
negative:
phase: parse
type: SyntaxError
flags: [onlyStrict]
--- |
482 |
13.0_4-17gs-strict.js |
---
es5id: 13.0_4-17gs
description: >
Strict Mode - SourceElements is not evaluated as strict mode code
when a Function constructor is contained in strict mode code
flags: [onlyStrict]
--- |
423 |
13.1-1gs-strict.js |
---
es5id: 13.1-1gs
description: >
Strict Mode - SyntaxError is thrown if the identifier 'eval'
appears within a FormalParameterList of a strict mode
FunctionDeclaration
negative:
phase: parse
type: SyntaxError
flags: [onlyStrict]
--- |
487 |
13.1-2-s-strict.js |
---
info: |
Refer 13.1;
It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs within a FormalParameterList
of a strict mode FunctionDeclaration or FunctionExpression.
es5id: 13.1-2-s
description: >
Strict Mode - SyntaxError is thrown if the identifier 'eval'
appears within a FormalParameterList of a strict mode
FunctionExpression
flags: [onlyStrict]
--- |
681 |
13.1-4-s-strict.js |
---
info: |
Refer 13.1;
It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs within a FormalParameterList
of a strict mode FunctionDeclaration or FunctionExpression.
es5id: 13.1-4-s
description: >
Strict Mode - SyntaxError is thrown if the identifier 'arguments'
appears within a FormalParameterList of a strict mode
FunctionExpression
flags: [onlyStrict]
--- |
692 |
13.1-4gs-strict.js |
---
es5id: 13.1-4gs
description: >
Strict Mode - SyntaxError is thrown if the identifier 'arguments'
appears within a FormalParameterList of a strict mode
FunctionExpression
negative:
phase: parse
type: SyntaxError
flags: [onlyStrict]
--- |
504 |
13.1-5gs-strict.js |
---
es5id: 13.1-5gs
description: >
Strict Mode - SyntaxError is thrown if a FunctionDeclaration has
two identical parameters
negative:
phase: parse
type: SyntaxError
flags: [onlyStrict]
--- |
446 |
13.1-8gs-strict.js |
---
es5id: 13.1-8gs
description: >
Strict Mode - SyntaxError is thrown if a FunctionExpression has
two identical parameters
negative:
phase: parse
type: SyntaxError
flags: [onlyStrict]
--- |
453 |
13.1-13gs-strict.js |
---
es5id: 13.1-13gs
description: >
StrictMode - SyntaxError is thrown if 'arguments' occurs as the
Identifier of a FunctionDeclaration
negative:
phase: parse
type: SyntaxError
flags: [onlyStrict]
--- |
444 |
13.1-19-s.js |
---
info: |
Refer 13.1;
It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs within a FormalParameterList
of a strict mode FunctionDeclaration or FunctionExpression.
es5id: 13.1-19-s
description: >
Strict Mode - SyntaxError is thrown if the identifier 'arguments'
appears within a FormalParameterList of a strict mode
FunctionDeclaration in strict eval code
flags: [noStrict]
--- |
705 |
13.1-21-s.js |
---
info: |
Refer 13.1;
It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs within a FormalParameterList
of a strict mode FunctionDeclaration or FunctionExpression.
es5id: 13.1-21-s
description: >
StrictMode - SyntaxError is thrown if the identifier 'arguments'
appears within a FormalParameterList of a strict mode
FunctionExpression in strict eval code
flags: [noStrict]
--- |
711 |
13.1-22-s.js |
---
info: |
Refer 13.1;
It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs within a FormalParameterList
of a strict mode FunctionDeclaration or FunctionExpression.
es5id: 13.1-22-s
description: >
StrictMode - SyntaxError is thrown if the identifier 'arguments'
appears within a FormalParameterList of a strict mode
FunctionExpression when FuctionBody is strict code
flags: [noStrict]
--- |
723 |
13.1-23-s.js |
---
info: |
Refer 13.1;
It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
FunctionDeclaration or FunctionExpression.
es5id: 13.1-23-s
description: >
Strict Mode - SyntaxError is thrown if a function is created using
a FunctionDeclaration that is contained in eval strict code and
the function has two identical parameters
flags: [noStrict]
--- |
706 |
13.1-25-s.js |
---
info: |
Refer 13.1;
It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
FunctionDeclaration or FunctionExpression.
es5id: 13.1-25-s
description: >
Strict Mode - SyntaxError is thrown if a function is created using
a FunctionDeclaration that is contained in eval strict code and
the function has two identical parameters which are separated by a
unique parameter name
flags: [noStrict]
--- |
767 |
13.1-27-s.js |
---
info: |
Refer 13.1;
It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
FunctionDeclaration or FunctionExpression.
es5id: 13.1-27-s
description: >
Strict Mode - SyntaxError is thrown if a function is created using
a FunctionDeclaration that is contained in eval strict code and
the function has three identical parameters
flags: [noStrict]
--- |
715 |
13.1-29-s.js |
---
info: |
Refer 13.1;
It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
FunctionDeclaration or FunctionExpression.
es5id: 13.1-29-s
description: >
Strict Mode - SyntaxError is thrown if a function is created using
a FunctionExpression that is contained in eval strict code and the
function has two identical parameters
flags: [noStrict]
--- |
713 |
13.1-31-s.js |
---
info: |
Refer 13.1;
It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
FunctionDeclaration or FunctionExpression.
es5id: 13.1-31-s
description: >
Strict Mode - SyntaxError is thrown if a function is created using
a FunctionExpression that is contained in eval strict code and the
function has two identical parameters, which are separated by a
unique parameter name
flags: [noStrict]
--- |
775 |
13.1-33-s.js |
---
info: |
Refer 13.1;
It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
FunctionDeclaration or FunctionExpression.
es5id: 13.1-33-s
description: >
Strict Mode - SyntaxError is thrown if function is created using a
FunctionExpression that is contained in eval strict code and the
function has three identical parameters
flags: [noStrict]
--- |
719 |
13.1-39-s.js |
---
es5id: 13.1-39-s
description: >
StrictMode - SyntaxError is thrown if 'arguments' occurs as the
function name of a FunctionDeclaration in strict eval code
flags: [noStrict]
--- |
449 |
13.1-41-s.js |
---
es5id: 13.1-41-s
description: >
StrictMode - SyntaxError is thrown if 'arguments' occurs as the
Identifier of a FunctionExpression in strict eval code
flags: [noStrict]
--- |
481 |
13.2-1-s.js |
---
es5id: 13.2-1-s
description: >
StrictMode - Writing or reading from a property named 'caller' of
function objects is allowed under both strict and normal modes.
--- |
459 |
13.2-2-s-strict.js |
---
es5id: 13.2-2-s
description: >
StrictMode - A TypeError is thrown when a strict mode code writes
to properties named 'caller' of function instances.
flags: [onlyStrict]
--- |
460 |
13.2-3-s.js |
---
es5id: 13.2-3-s
description: >
StrictMode - Writing or reading from a property named 'arguments'
of function objects is allowed under both strict and normal modes.
--- |
470 |
13.2-4-s-strict.js |
---
es5id: 13.2-4-s
description: >
StrictMode - A TypeError is thrown when a code in strict mode
tries to write to 'arguments' of function instances.
flags: [onlyStrict]
--- |
460 |
13.2-5-s.js |
---
es5id: 13.2-5-s
description: >
StrictMode - reading a property named 'caller' of function objects
is not allowed outside the function
flags: [noStrict]
--- |
442 |
13.2-6-s.js |
---
es5id: 13.2-6-s
description: >
StrictMode - writing a property named 'caller' of function objects
is not allowed outside the function
flags: [noStrict]
--- |
436 |
13.2-7-s.js |
---
es5id: 13.2-7-s
description: >
StrictMode - enumerating over a function object looking for
'caller' fails outside of the function
flags: [noStrict]
--- |
459 |
13.2-8-s.js |
---
es5id: 13.2-8-s
description: >
StrictMode - enumerating over a function object looking for
'caller' fails inside the function
flags: [noStrict]
--- |
464 |
13.2-9-s.js |
---
es5id: 13.2-9-s
description: >
StrictMode - reading a property named 'caller' of function objects
is not allowed outside the function
flags: [noStrict]
--- |
438 |
13.2-10-s.js |
---
es5id: 13.2-10-s
description: >
StrictMode - writing a property named 'caller' of function objects
is not allowed outside the function
--- |
415 |
13.2-11-s.js |
---
es5id: 13.2-11-s
description: >
StrictMode - enumerating over a function object looking for
'caller' fails outside of the function
--- |
438 |
13.2-12-s.js |
---
es5id: 13.2-12-s
description: >
StrictMode - enumerating over a function object looking for
'caller' fails inside the function
--- |
443 |
13.2-13-s.js |
---
es5id: 13.2-13-s
description: >
StrictMode - reading a property named 'arguments' of function
objects is not allowed outside the function
--- |
431 |
13.2-14-s.js |
---
es5id: 13.2-14-s
description: >
StrictMode - writing a property named 'arguments' of function
objects is not allowed outside the function
--- |
425 |
13.2-15-1.js |
---
es5id: 13.2-15-1
description: >
Function Object has length as its own property and does not invoke
the setter defined on Function.prototype.length (Step 15)
includes: [propertyHelper.js]
--- |
508 |
13.2-15-s.js |
---
es5id: 13.2-15-s
description: >
StrictMode - enumerating over a function object looking for
'arguments' fails outside of the function
--- |
448 |
13.2-16-s.js |
---
es5id: 13.2-16-s
description: >
StrictMode - enumerating over a function object looking for
'arguments' fails inside the function
--- |
453 |
13.2-17-1.js |
---
es5id: 13.2-17-1
description: >
Function Object has 'constructor' as its own property, it is not
enumerable and does not invoke the setter defined on
Function.prototype.constructor (Step 17)
includes: [propertyHelper.js]
--- |
976 |
13.2-17-s.js |
---
es5id: 13.2-17-s
description: >
StrictMode - reading a property named 'arguments' of function
objects is not allowed outside the function
--- |
427 |
13.2-18-1.js |
---
es5id: 13.2-18-1
description: >
Function Object has 'prototype' as its own property, it is not
enumerable and does not invoke the setter defined on
Function.prototype (Step 18)
includes: [propertyHelper.js]
--- |
1050 |
13.2-18-s.js |
---
es5id: 13.2-18-s
description: >
StrictMode - writing a property named 'arguments' of function
objects is not allowed outside the function
--- |
421 |
13.2-19-b-3gs-strict.js |
---
es5id: 13.2-19-b-3gs
description: >
StrictMode - error is thrown when assign a value to the 'caller'
property of a function object
flags: [onlyStrict]
--- |
447 |
13.2-19-s.js |
---
es5id: 13.2-19-s
description: >
StrictMode - enumerating over a function object looking for
'arguments' fails outside of the function
--- |
444 |
13.2-20-s.js |
---
es5id: 13.2-20-s
description: >
StrictMode - enumerating over a function object looking for
'arguments' fails inside the function
flags: [noStrict]
--- |
467 |
13.2-21-s.js |
---
es5id: 13.2-21-s
description: >
StrictMode - reading a property named 'caller' of function objects
is not allowed outside the function
flags: [noStrict]
--- |
434 |
13.2-22-s.js |
---
es5id: 13.2-22-s
description: >
StrictMode - writing a property named 'caller' of function objects
is not allowed outside the function
flags: [noStrict]
--- |
428 |
13.2-23-s.js |
---
es5id: 13.2-23-s
description: >
StrictMode - enumerating over a function object looking for
'caller' fails outside of the function
flags: [noStrict]
--- |
450 |
13.2-24-s.js |
---
es5id: 13.2-24-s
description: >
StrictMode - enumerating over a function object looking for
'caller' fails inside the function
flags: [noStrict]
--- |
481 |
13.2-25-s.js |
---
es5id: 13.2-25-s
description: >
StrictMode - reading a property named 'arguments' of function
objects is not allowed outside the function
flags: [noStrict]
--- |
440 |
13.2-26-s.js |
---
es5id: 13.2-26-s
description: >
StrictMode - writing a property named 'arguments' of function
objects is not allowed outside the function
flags: [noStrict]
--- |
434 |
13.2-27-s.js |
---
es5id: 13.2-27-s
description: >
StrictMode - enumerating over a function object looking for
'arguments' fails outside of the function
flags: [noStrict]
--- |
457 |
13.2-28-s.js |
---
es5id: 13.2-28-s
description: >
StrictMode - enumerating over a function object looking for
'arguments' fails inside the function
flags: [noStrict]
--- |
485 |
13.2-30-s.js |
---
description: >
Functions created using Function.prototype.bind() do not have own
properties "caller" or "arguments", but inherit them from
%FunctionPrototype%.
--- |
967 |
arguments-with-arguments-fn.js |
---
esid: sec-functiondeclarationinstantiation
es6id: 9.2.12
description: >
Arguments object is created even when the body contains a lexically-scoped
binding named "arguments"
info: |
[...]
19. Else if "arguments" is an element of parameterNames, then
a. Let argumentsObjectNeeded be false.
20. Else if hasParameterExpressions is false, then
a. If "arguments" is an element of functionNames or if "arguments" is an
element of lexicalNames, then
i. Let argumentsObjectNeeded be false.
[...]
flags: [noStrict]
--- |
876 |
arguments-with-arguments-lex.js |
---
esid: sec-functiondeclarationinstantiation
es6id: 9.2.12
description: >
Arguments object is created even when the body contains a function named
"arguments"
info: |
[...]
19. Else if "arguments" is an element of parameterNames, then
a. Let argumentsObjectNeeded be false.
20. Else if hasParameterExpressions is false, then
a. If "arguments" is an element of functionNames or if "arguments" is an
element of lexicalNames, then
i. Let argumentsObjectNeeded be false.
[...]
flags: [noStrict]
--- |
851 |
array-destructuring-param-strict-body.js |
|
5282 |
browser.js |
|
0 |
cptn-decl.js |
---
esid: sec-function-definitions-runtime-semantics-evaluation
description: Function declaration completion value is empty.
info: |
FunctionDeclaration : function BindingIdentifier ( FormalParameters ) { FunctionBody }
1. Return NormalCompletion(empty).
--- |
523 |
dflt-params-abrupt.js |
---
description: Abrupt completion returned by evaluation of initializer (function declaration)
esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
features: [default-parameters]
flags: [generated]
info: |
FunctionDeclaration :
function BindingIdentifier ( FormalParameters ) { FunctionBody }
[...]
3. Let F be FunctionCreate(Normal, FormalParameters, FunctionBody,
scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
14.1.19 Runtime Semantics: IteratorBindingInitialization
FormalsList : FormalsList , FormalParameter
1. Let status be the result of performing IteratorBindingInitialization for
FormalsList using iteratorRecord and environment as the arguments.
2. ReturnIfAbrupt(status).
3. Return the result of performing IteratorBindingInitialization for
FormalParameter using iteratorRecord and environment as the arguments.
--- |
2008 |
dflt-params-arg-val-not-undefined.js |
---
description: Use of initializer when argument value is not `undefined` (function declaration)
esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
features: [default-parameters]
flags: [generated]
info: |
FunctionDeclaration :
function BindingIdentifier ( FormalParameters ) { FunctionBody }
[...]
3. Let F be FunctionCreate(Normal, FormalParameters, FunctionBody,
scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
14.1.19 Runtime Semantics: IteratorBindingInitialization
FormalsList : FormalsList , FormalParameter
[...]
23. Let iteratorRecord be Record {[[Iterator]]:
CreateListIterator(argumentsList), [[Done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
a. Perform ? IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
--- |
2856 |
dflt-params-arg-val-undefined.js |
---
description: Use of initializer when argument value is `undefined` (function declaration)
esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
features: [default-parameters]
flags: [generated]
info: |
FunctionDeclaration :
function BindingIdentifier ( FormalParameters ) { FunctionBody }
[...]
3. Let F be FunctionCreate(Normal, FormalParameters, FunctionBody,
scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
14.1.19 Runtime Semantics: IteratorBindingInitialization
FormalsList : FormalsList , FormalParameter
[...]
23. Let iteratorRecord be Record {[[Iterator]]:
CreateListIterator(argumentsList), [[Done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
a. Perform ? IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
--- |
2125 |
dflt-params-duplicates.js |
---
description: It is a Syntax Error if BoundNames of FormalParameters contains any duplicate elements. (function declaration)
esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
features: [default-parameters]
flags: [generated]
negative:
phase: parse
type: SyntaxError
info: |
FunctionDeclaration :
function BindingIdentifier ( FormalParameters ) { FunctionBody }
[...]
3. Let F be FunctionCreate(Normal, FormalParameters, FunctionBody,
scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
14.1.2 Static Semantics: Early Errors
StrictFormalParameters : FormalParameters
- It is a Syntax Error if BoundNames of FormalParameters contains any
duplicate elements.
FormalParameters : FormalParameterList
- It is a Syntax Error if IsSimpleParameterList of FormalParameterList is
false and BoundNames of FormalParameterList contains any duplicate
elements.
--- |
1869 |
dflt-params-ref-later.js |
---
description: Referencing a parameter that occurs later in the ParameterList (function declaration)
esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
features: [default-parameters]
flags: [generated]
info: |
FunctionDeclaration :
function BindingIdentifier ( FormalParameters ) { FunctionBody }
[...]
3. Let F be FunctionCreate(Normal, FormalParameters, FunctionBody,
scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
14.1.19 Runtime Semantics: IteratorBindingInitialization
FormalsList : FormalsList , FormalParameter
1. Let status be the result of performing IteratorBindingInitialization for
FormalsList using iteratorRecord and environment as the arguments.
2. ReturnIfAbrupt(status).
3. Return the result of performing IteratorBindingInitialization for
FormalParameter using iteratorRecord and environment as the arguments.
--- |
1991 |
dflt-params-ref-prior.js |
---
description: Referencing a parameter that occurs earlier in the ParameterList (function declaration)
esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
features: [default-parameters]
flags: [generated]
info: |
FunctionDeclaration :
function BindingIdentifier ( FormalParameters ) { FunctionBody }
[...]
3. Let F be FunctionCreate(Normal, FormalParameters, FunctionBody,
scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
14.1.19 Runtime Semantics: IteratorBindingInitialization
FormalsList : FormalsList , FormalParameter
1. Let status be the result of performing IteratorBindingInitialization for
FormalsList using iteratorRecord and environment as the arguments.
2. ReturnIfAbrupt(status).
3. Return the result of performing IteratorBindingInitialization for
FormalParameter using iteratorRecord and environment as the arguments.
--- |
2158 |
dflt-params-ref-self.js |
---
description: Referencing a parameter from within its own initializer (function declaration)
esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
features: [default-parameters]
flags: [generated]
info: |
FunctionDeclaration :
function BindingIdentifier ( FormalParameters ) { FunctionBody }
[...]
3. Let F be FunctionCreate(Normal, FormalParameters, FunctionBody,
scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
14.1.19 Runtime Semantics: IteratorBindingInitialization
FormalsList : FormalsList , FormalParameter
1. Let status be the result of performing IteratorBindingInitialization for
FormalsList using iteratorRecord and environment as the arguments.
2. ReturnIfAbrupt(status).
3. Return the result of performing IteratorBindingInitialization for
FormalParameter using iteratorRecord and environment as the arguments.
--- |
1980 |
dflt-params-rest.js |
---
description: RestParameter does not support an initializer (function declaration)
esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
features: [default-parameters]
flags: [generated]
negative:
phase: parse
type: SyntaxError
info: |
FunctionDeclaration :
function BindingIdentifier ( FormalParameters ) { FunctionBody }
[...]
3. Let F be FunctionCreate(Normal, FormalParameters, FunctionBody,
scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
14.1 Function Definitions
Syntax
FunctionRestParameter[Yield] :
BindingRestElement[?Yield]
13.3.3 Destructuring Binding Patterns
Syntax
BindingRestElement[Yield] :
...BindingIdentifier[?Yield]
...BindingPattern[?Yield]
--- |
1688 |
dflt-params-trailing-comma.js |
---
description: A trailing comma should not increase the respective length, using default parameters (function declaration)
esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
flags: [generated]
info: |
FunctionDeclaration :
function BindingIdentifier ( FormalParameters ) { FunctionBody }
[...]
3. Let F be FunctionCreate(Normal, FormalParameters, FunctionBody,
scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Trailing comma in the parameters list
14.1 Function Definitions
FormalParameters[Yield, Await] : FormalParameterList[?Yield, ?Await] ,
--- |
1815 |
dstr |
|
|
early-body-super-call.js |
---
esid: sec-function-definitions-static-semantics-early-errors
es6id: 14.1.2
description: Body may not contain a "super" call
info: |
It is a Syntax Error if FunctionBody Contains SuperCall is true.
negative:
phase: parse
type: SyntaxError
--- |
473 |
early-body-super-prop.js |
---
esid: sec-function-definitions-static-semantics-early-errors
es6id: 14.1.2
description: Body may not contain a "super" property reference
info: |
It is a Syntax Error if FunctionBody Contains SuperProperty is true.
negative:
phase: parse
type: SyntaxError
--- |
491 |
early-errors |
|
|
early-params-super-call.js |
---
esid: sec-function-definitions-static-semantics-early-errors
es6id: 14.1.2
description: Parameters may not contain a "super" call
info: |
It is a Syntax Error if FormalParameters Contains SuperProperty is true.
negative:
phase: parse
type: SyntaxError
--- |
486 |
early-params-super-prop.js |
---
esid: sec-function-definitions-static-semantics-early-errors
es6id: 14.1.2
description: Parameters may not contain a "super" property reference
info: |
It is a Syntax Error if FunctionBody Contains SuperProperty is true.
negative:
phase: parse
type: SyntaxError
--- |
496 |
enable-strict-via-body.js |
---
info: |
Refer 13;
The production FunctionBody : SourceElementsopt is evaluated as follows:
es5id: 13.0-10-s
description: >
Strict Mode - SourceElements is evaluated as strict mode code when
the code of this FunctionBody with an inner function contains a
Use Strict Directive
negative:
phase: parse
type: SyntaxError
flags: [noStrict]
--- |
664 |
enable-strict-via-outer-body.js |
---
info: |
Refer 13;
The production FunctionBody : SourceElementsopt is evaluated as follows:
es5id: 13.0-11-s
description: >
Strict Mode - SourceElements is evaluated as strict mode code when
the code of this FunctionBody with an inner function which is in
strict mode
negative:
phase: parse
type: SyntaxError
flags: [noStrict]
--- |
652 |
enable-strict-via-outer-script-strict.js |
---
info: |
Refer 13;
The production FunctionBody : SourceElementsopt is evaluated as follows:
es5id: 13.0-9-s
description: >
Strict Mode - SourceElements is evaluated as strict mode code when
a FunctionDeclaration that is contained in strict mode code has an
inner function
negative:
phase: parse
type: SyntaxError
flags: [onlyStrict]
--- |
660 |
eval-var-scope-syntax-err.js |
---
description: sloppy direct eval in params introduces var (function declaration in sloppy code)
esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
features: [default-parameters]
flags: [generated, noStrict]
info: |
FunctionDeclaration :
function BindingIdentifier ( FormalParameters ) { FunctionBody }
[...]
3. Let F be FunctionCreate(Normal, FormalParameters, FunctionBody,
scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Runtime Semantics: IteratorBindingInitialization
FormalParameter : BindingElement
1. Return the result of performing IteratorBindingInitialization for BindingElement with arguments iteratorRecord and environment.
--- |
1795 |
forbidden-ext |
|
|
invalid-2-names.js |
---
es5id: 13.0-1
description: >
13.0 - multiple names in one function declaration is not allowed,
two function names
negative:
phase: parse
type: SyntaxError
--- |
385 |
invalid-3-names.js |
---
es5id: 13.0-2
description: >
13.0 - multiple names in one function declaration is not allowed,
three function names
negative:
phase: parse
type: SyntaxError
--- |
387 |
invalid-function-body-1.js |
---
info: The FunctionBody must be SourceElements
es5id: 13_A7_T2
description: >
Inserting elements that is different from SourceElements into the
FunctionBody
negative:
phase: parse
type: SyntaxError
--- |
430 |
invalid-function-body-2.js |
---
info: The FunctionBody must be SourceElements
es5id: 13_A7_T2
description: >
Inserting elements that is different from SourceElements into the
FunctionBody
negative:
phase: parse
type: SyntaxError
--- |
427 |
invalid-function-body-3.js |
---
info: The FunctionBody must be SourceElements
es5id: 13_A7_T2
description: >
Inserting elements that is different from SourceElements into the
FunctionBody
negative:
phase: parse
type: SyntaxError
--- |
430 |
invalid-name-dot.js |
---
es5id: 13.0-3
description: >
13.0 - property names in function definition is not allowed, add a
new property into object
negative:
phase: parse
type: SyntaxError
--- |
394 |
invalid-name-two-dots.js |
---
es5id: 13.0-4
description: >
13.0 - multiple names in one function declaration is not allowed,
add a new property into a property which is a object
negative:
phase: parse
type: SyntaxError
--- |
424 |
length-dflt.js |
---
es6id: 14.1.6
description: >
Default parameters' effect on function length
info: |
Function length is counted by the non initialized parameters in the left.
9.2.4 FunctionInitialize (F, kind, ParameterList, Body, Scope)
[...]
2. Let len be the ExpectedArgumentCount of ParameterList.
3. Perform ! DefinePropertyOrThrow(F, "length", PropertyDescriptor{[[Value]]:
len, [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true}).
[...]
FormalsList : FormalParameter
1. If HasInitializer of FormalParameter is true return 0
2. Return 1.
FormalsList : FormalsList , FormalParameter
1. Let count be the ExpectedArgumentCount of FormalsList.
2. If HasInitializer of FormalsList is true or HasInitializer of
FormalParameter is true, return count.
3. Return count+1.
features: [default-parameters]
includes: [propertyHelper.js]
--- |
1603 |
line-terminator.js |
---
info: Any separators are admitted between declaration chunks
es5id: 13_A16
description: Inserting separators between declaration chunks
--- |
821 |
name-arguments-non-strict.js |
---
es5id: 13.1-3-7
description: >
arguments allowed as function identifier in non-strict function
declaration
flags: [noStrict]
--- |
328 |
name-arguments-strict-body.js |
---
es5id: 13.1-40-s
description: >
StrictMode - SyntaxError is thrown if 'arguments' occurs as the
Identifier of a FunctionDeclaration whose FunctionBody is
contained in strict code
negative:
phase: parse
type: SyntaxError
flags: [noStrict]
--- |
492 |
name-arguments-strict-strict.js |
---
es5id: 13.1-13-s
description: >
StrictMode - SyntaxError is thrown if 'arguments' occurs as the
function name of a FunctionDeclaration in strict mode
negative:
phase: parse
type: SyntaxError
flags: [onlyStrict]
--- |
461 |
name-eval-non-strict.js |
---
es5id: 13.1-3-1
description: >
eval allowed as function identifier in non-strict function
declaration
flags: [noStrict]
--- |
317 |
name-eval-strict-body.js |
---
es5id: 13.1-36-s
description: >
StrictMode - SyntaxError is thrown if 'eval' occurs as the
function name of a FunctionDeclaration whose FunctionBody is in
strict mode
negative:
phase: parse
type: SyntaxError
flags: [noStrict]
--- |
475 |
name-eval-strict-strict.js |
---
es5id: 13.1-11-s
description: >
StrictMode - SyntaxError is thrown if 'eval' occurs as the
function name of a FunctionDeclaration in strict mode
negative:
phase: parse
type: SyntaxError
flags: [onlyStrict]
--- |
451 |
name-eval-stricteval.js |
---
es5id: 13.1-35-s
description: >
StrictMode - SyntaxError is thrown if 'eval' occurs as the
function name of a FunctionDeclaration in strict eval code
flags: [noStrict]
--- |
447 |
name-unicode.js |
---
info: Unicode symbols in function name are allowed
es5id: 13_A14
description: Defining function name with unicode symbols
--- |
653 |
name.js |
---
es6id: 14.1.19
description: Assignment of function `name` attribute
info: |
FunctionDeclaration :
function BindingIdentifier ( FormalParameters ) { FunctionBody }
1. Let name be StringValue of BindingIdentifier.
2. Let F be FunctionCreate(Normal, FormalParameters, FunctionBody, scope, strict).
3. Perform MakeConstructor(F).
4. Perform SetFunctionName(F, name).
5. Return F.
includes: [propertyHelper.js]
--- |
747 |
object-destructuring-param-strict-body.js |
|
5285 |
param-arguments-non-strict.js |
---
es5id: 13.1-2-5
description: >
arguments allowed as formal parameter name of a non-strict
function declaration
flags: [noStrict]
--- |
334 |
param-arguments-strict-body.js |
---
info: |
Refer 13.1;
It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs within a FormalParameterList
of a strict mode FunctionDeclaration or FunctionExpression.
es5id: 13.1-20-s
description: >
StrictMode - SyntaxError is thrown if the identifier 'arguments'
appears within a FormalParameterList of a strict mode
FunctionDeclaration when FuctionBody is strict code
negative:
phase: parse
type: SyntaxError
flags: [noStrict]
--- |
731 |
param-arguments-strict-strict.js |
---
info: |
Refer 13.1;
It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs within a FormalParameterList
of a strict mode FunctionDeclaration or FunctionExpression.
es5id: 13.1-3-s
description: >
Strict Mode - SyntaxError is thrown if the identifier 'arguments'
appears within a FormalParameterList of a strict mode
FunctionDeclaration
negative:
phase: parse
type: SyntaxError
flags: [onlyStrict]
--- |
700 |
param-dflt-yield-non-strict.js |
---
esid: sec-function-definitions
es6id: 14.1
description: >
The `yield` token is interpreted as an IdentifierReference within a generator
and outside of strict mode
info: |
FunctionDeclaration[Yield, Default] :
function BindingIdentifier[?Yield] ( FormalParameters ) { FunctionBody }
features: [generators, default-parameters]
flags: [noStrict]
--- |
683 |
param-dflt-yield-strict-strict.js |
---
esid: sec-function-definitions
es6id: 14.1
description: >
The `yield` token is interpreted as an IdentifierReference within a generator
and outside of strict mode
info: |
FunctionDeclaration[Yield, Default] :
function BindingIdentifier[?Yield] ( FormalParameters ) { FunctionBody }
features: [generators, default-parameters]
flags: [onlyStrict]
negative:
phase: parse
type: SyntaxError
--- |
683 |
param-duplicated-non-strict.js |
---
es5id: 13.1-1-1
description: >
Duplicate identifier allowed in non-strict function declaration
parameter list
flags: [noStrict]
--- |
327 |
param-duplicated-strict-1-strict.js |
---
info: |
Refer 13.1;
It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
FunctionDeclaration or FunctionExpression.
es5id: 13.1-5-s
description: >
Strict Mode - SyntaxError is thrown if a function is declared in
'strict mode' using a FunctionDeclaration and the function has two
identical parameters
negative:
phase: parse
type: SyntaxError
flags: [onlyStrict]
--- |
700 |
param-duplicated-strict-2-strict.js |
---
info: |
Refer 13.1;
It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
FunctionDeclaration or FunctionExpression.
es5id: 13.1-6-s
description: >
Strict Mode - SyntaxError is thrown if a function is created in
'strict mode' using a FunctionDeclaration and the function has two
identical parameters, which are separated by a unique parameter
name
negative:
phase: parse
type: SyntaxError
flags: [onlyStrict]
--- |
761 |
param-duplicated-strict-3-strict.js |
---
info: |
Refer 13.1;
It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
FunctionDeclaration or FunctionExpression.
es5id: 13.1-7-s
description: >
Strict Mode - SyntaxError is thrown if a function is created in
'strict mode' using a FunctionDeclaration and the function has
three identical parameters
negative:
phase: parse
type: SyntaxError
flags: [onlyStrict]
--- |
708 |
param-duplicated-strict-body-1.js |
---
info: |
Refer 13.1;
It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
FunctionDeclaration or FunctionExpression.
es5id: 13.1-24-s
description: >
Strict Mode - SyntaxError is thrown if a function is created using
a FunctionDeclaration whose FunctionBody is contained in strict
code and the function has two identical parameters
negative:
phase: parse
type: SyntaxError
flags: [noStrict]
--- |
729 |
param-duplicated-strict-body-2.js |
---
info: |
Refer 13.1;
It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
FunctionDeclaration or FunctionExpression.
es5id: 13.1-26-s
description: >
Strict Mode - SyntaxError is thrown if a function is created using
a FunctionDeclaration whose FunctionBody is contained in strict
code and the function has two identical parameters which are
separated by a unique parameter name
negative:
phase: parse
type: SyntaxError
flags: [noStrict]
--- |
790 |
param-duplicated-strict-body-3.js |
---
info: |
Refer 13.1;
It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
FunctionDeclaration or FunctionExpression.
es5id: 13.1-28-s
description: >
Strict Mode - SyntaxError is thrown if a function is created using
a FunctionDeclaration whose FunctionBody is contained in strict
code and the function has three identical parameters
negative:
phase: parse
type: SyntaxError
flags: [noStrict]
--- |
738 |
param-eval-non-strict-is-correct-value.js |
---
esid: sec-strict-mode-of-ecmascript
description: >
eval allowed as formal parameter name of a non-strict function declaration
flags: [noStrict]
--- |
493 |
param-eval-non-strict.js |
---
es5id: 13.1-2-1
description: >
eval allowed as formal parameter name of a non-strict function
declaration
flags: [noStrict]
--- |
325 |
param-eval-strict-body.js |
---
info: |
Refer 13.1;
It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs within a FormalParameterList
of a strict mode FunctionDeclaration or FunctionExpression.
es5id: 13.1-16-s
description: >
StrictMode - SyntaxError is thrown if the identifier 'eval'
appears within a FormalParameterList of a strict mode
FunctionDeclaration when FuctionBody is strict code
negative:
phase: parse
type: SyntaxError
flags: [noStrict]
--- |
721 |
param-eval-strict-strict.js |
---
info: |
Refer 13.1;
It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs within a FormalParameterList
of a strict mode FunctionDeclaration or FunctionExpression.
es5id: 13.1-1-s
description: >
Strict Mode - SyntaxError is thrown if the identifier 'eval'
appears within a FormalParameterList of a strict mode
FunctionDeclaration
negative:
phase: parse
type: SyntaxError
flags: [onlyStrict]
--- |
690 |
param-eval-stricteval.js |
---
info: |
Refer 13.1;
It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs within a FormalParameterList
of a strict mode FunctionDeclaration or FunctionExpression.
es5id: 13.1-15-s
description: >
Strict Mode - SyntaxError is thrown if the identifier 'eval'
appears within a FormalParameterList of a strict mode
FunctionDeclaration in strict eval code
flags: [noStrict]
--- |
703 |
params-dflt-args-unmapped.js |
---
description: Referencing the arguments object from a default parameter (function declaration)
esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
es6id: 14.1.19
features: [default-parameters]
info: |
FunctionDeclaration :
function BindingIdentifier ( FormalParameters ) { FunctionBody }
[...]
3. Let F be FunctionCreate(Normal, FormalParameters, FunctionBody,
scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
14.1.19 Runtime Semantics: IteratorBindingInitialization
FormalsList : FormalsList , FormalParameter
1. Let status be the result of performing IteratorBindingInitialization for
FormalsList using iteratorRecord and environment as the arguments.
2. ReturnIfAbrupt(status).
3. Return the result of performing IteratorBindingInitialization for
FormalParameter using iteratorRecord and environment as the arguments.
--- |
2512 |
params-dflt-ref-arguments.js |
---
description: Referencing the arguments object from a default parameter (function declaration)
esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
es6id: 14.1.19
features: [default-parameters]
info: |
FunctionDeclaration :
function BindingIdentifier ( FormalParameters ) { FunctionBody }
[...]
3. Let F be FunctionCreate(Normal, FormalParameters, FunctionBody,
scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
14.1.19 Runtime Semantics: IteratorBindingInitialization
FormalsList : FormalsList , FormalParameter
1. Let status be the result of performing IteratorBindingInitialization for
FormalsList using iteratorRecord and environment as the arguments.
2. ReturnIfAbrupt(status).
3. Return the result of performing IteratorBindingInitialization for
FormalParameter using iteratorRecord and environment as the arguments.
--- |
2115 |
params-trailing-comma-multiple.js |
---
description: A trailing comma should not increase the respective length, using multiple parameters (function declaration)
esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
flags: [generated]
info: |
FunctionDeclaration :
function BindingIdentifier ( FormalParameters ) { FunctionBody }
[...]
3. Let F be FunctionCreate(Normal, FormalParameters, FunctionBody,
scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Trailing comma in the parameters list
14.1 Function Definitions
FormalParameters[Yield, Await] : FormalParameterList[?Yield, ?Await] ,
--- |
1808 |
params-trailing-comma-single.js |
---
description: A trailing comma should not increase the respective length, using a single parameter (function declaration)
esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
flags: [generated]
info: |
FunctionDeclaration :
function BindingIdentifier ( FormalParameters ) { FunctionBody }
[...]
3. Let F be FunctionCreate(Normal, FormalParameters, FunctionBody,
scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Trailing comma in the parameters list
14.1 Function Definitions
FormalParameters[Yield, Await] : FormalParameterList[?Yield, ?Await] ,
--- |
1772 |
rest-param-strict-body.js |
|
5291 |
rest-params-trailing-comma-early-error.js |
---
description: It's a syntax error if a FunctionRestParameter is followed by a trailing comma (function declaration)
esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
flags: [generated]
negative:
phase: parse
type: SyntaxError
info: |
FunctionDeclaration :
function BindingIdentifier ( FormalParameters ) { FunctionBody }
[...]
3. Let F be FunctionCreate(Normal, FormalParameters, FunctionBody,
scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
Trailing comma in the parameters list
14.1 Function Definitions
FormalParameters[Yield, Await] :
[empty]
FunctionRestParameter[?Yield, ?Await]
FormalParameterList[?Yield, ?Await]
FormalParameterList[?Yield, ?Await] ,
FormalParameterList[?Yield, ?Await] , FunctionRestParameter[?Yield, ?Await]
--- |
1786 |
S10.1.1_A1_T1.js |
---
info: |
Program functions are defined in source text by a FunctionDeclaration or created dynamically either
by using a FunctionExpression or by using the built-in Function object as a constructor
es5id: 10.1.1_A1_T1
description: Defining function by a FunctionDeclaration
--- |
572 |
S13.2.1_A1_T1.js |
---
info: The depth of nested function calls reaches 32
es5id: 13.2.1_A1_T1
description: Creating function calls 32 elements depth
--- |
4714 |
S13.2.1_A4_T1.js |
---
info: Objects as arguments are passed by reference
es5id: 13.2.1_A4_T1
description: >
Adding new number property to a function argument within the
function body, where explicit argument is an object defined with
"var __obj={}"
--- |
760 |
S13.2.1_A4_T2.js |
---
info: Objects as arguments are passed by reference
es5id: 13.2.1_A4_T2
description: >
Adding new string property to a function argument within the
function body, where explicit argument is an object defined with
"__obj={}"
--- |
796 |
S13.2.1_A4_T3.js |
---
info: Objects as arguments are passed by reference
es5id: 13.2.1_A4_T3
description: >
Adding new number property to a function argument within the
function body, where array element "arguments[0]" is an object
defined with "__obj={}"
--- |
776 |
S13.2.1_A4_T4.js |
---
info: Objects as arguments are passed by reference
es5id: 13.2.1_A4_T4
description: >
Adding new number property to a function argument within the
function body, where array element "arguments[0]" is an object
defined with "var __obj={}"
--- |
775 |
S13.2.1_A5_T1.js |
---
info: Closures are admitted
es5id: 13.2.1_A5_T1
description: Sorting with closure
--- |
796 |
S13.2.1_A5_T2.js |
---
info: Closures are admitted
es5id: 13.2.1_A5_T2
description: >
Returning a function that approximates the derivative of f using
an interval of dx, which should be appropriately small
--- |
992 |
S13.2.1_A6_T1.js |
---
info: Primitive types are passed by value
es5id: 13.2.1_A6_T1
description: Declaring a function with "function __func(arg1, arg2)"
flags: [noStrict]
--- |
805 |
S13.2.1_A6_T2.js |
---
info: Primitive types are passed by value
es5id: 13.2.1_A6_T2
description: Declaring a function with "__func = function(arg1, arg2)"
flags: [noStrict]
--- |
809 |
S13.2.1_A6_T3.js |
---
info: Primitive types are passed by value
es5id: 13.2.1_A6_T1
description: Declaring a function with "function __func(arg1, arg2)"
--- |
806 |
S13.2.1_A6_T4.js |
---
info: Primitive types are passed by value
es5id: 13.2.1_A6_T2
description: Declaring a function with "__func = function(arg1, arg2)"
--- |
810 |
S13.2.1_A7_T1.js |
---
info: |
When the [[Call]] property for a Function object F is called, the following steps are taken:
2. Evaluate F's FunctionBody;
if Result.type is returned then Result.value is returned too
es5id: 13.2.1_A7_T1
description: Returning null. Declaring a function with "function __func()"
--- |
843 |
S13.2.1_A7_T2.js |
---
info: |
When the [[Call]] property for a Function object F is called, the following steps are taken:
2. Evaluate F's FunctionBody;
if Result.type is returned then Result.value is returned too
es5id: 13.2.1_A7_T2
description: >
Returning null. Declaring a function with "var __func = function
()"
--- |
867 |
S13.2.1_A7_T3.js |
---
info: |
When the [[Call]] property for a Function object F is called, the following steps are taken:
2. Evaluate F's FunctionBody;
if Result.type is returned then Result.value is returned too
es5id: 13.2.1_A7_T3
description: Returning number. Declaring a function with "function __func()"
flags: [noStrict]
--- |
1668 |
S13.2.1_A7_T4.js |
---
info: |
When the [[Call]] property for a Function object F is called, the following steps are taken:
2. Evaluate F's FunctionBody;
if Result.type is returned then Result.value is returned too
es5id: 13.2.1_A7_T4
description: Returning boolean. Declaring a function with "function __func()"
--- |
1720 |
S13.2.1_A8_T1.js |
---
info: |
When the [[Call]] property for a Function object F is called, the following steps are taken:
2. Evaluate F's FunctionBody;
if Result.type is thrown then Result.value is thrown too
es5id: 13.2.1_A8_T1
description: >
Throwing an exception within a function body. Declaring function
with "function __func()"
--- |
843 |
S13.2.1_A8_T2.js |
---
info: |
When the [[Call]] property for a Function object F is called, the following steps are taken:
2. Evaluate F's FunctionBody;
if Result.type is thrown then Result.value is thrown too
es5id: 13.2.1_A8_T2
description: >
Throwing an exception within a function body. Declaring function
with "var __func = function (message)"
--- |
886 |
S13.2.1_A9.1_T1.js |
---
info: |
When the [[Call]] property for a Function object is called,
the body is evaluated and if evaluation result has type "normal", then "undefined" is returned
es5id: 13.2.1_A9.1_T1
description: >
Declaring a function with "function __func()" and no "return" in
the function body
--- |
1046 |
S13.2.1_A9.1_T2.js |
---
info: |
When the [[Call]] property for a Function object is called,
the body is evaluated and if evaluation result has type "normal", then "undefined" is returned
es5id: 13.2.1_A9.1_T2
description: >
Declaring a function with "var __func = function()" and no
"return" in the function body
--- |
1058 |
S13.2.1_A9_T1.js |
---
info: |
When the [[Call]] property for a Function object is called,
the body is evaluated and if evaluation result has type "return" its value is not defined, then "undefined" is returned
es5id: 13.2.1_A9_T1
description: >
Using "return" with no expression. Declaring a function with
"function __func()"
--- |
1077 |
S13.2.1_A9_T2.js |
---
info: |
When the [[Call]] property for a Function object is called,
the body is evaluated and if evaluation result has type "return" its value is not defined, then "undefined" is returned
es5id: 13.2.1_A9_T2
description: >
Using "return" with no expression. Declaring a function with "var
__func = function()"
--- |
1089 |
S13.2.2_A1_T1.js |
---
info: |
Since a function is an object, it might be set to [[Prototype]] property
of a new created object through [[Construct]] property
es5id: 13.2.2_A1_T1
description: Declaring a function with "function __func()"
--- |
1303 |
S13.2.2_A1_T2.js |
---
info: |
Since a function is an object, it might be set to [[Prototype]] property
of a new created object through [[Construct]] property
es5id: 13.2.2_A1_T2
description: Declaring a function with "var __PROTO = function()"
--- |
1322 |
S13.2.2_A2.js |
---
info: |
Since a function is an object, it might be set to [[Prototype]] property of a new created object through [[Construct]] property,
but [[call]] property must fail with TypeError error
es5id: 13.2.2_A2
description: Trying to [[call]] this function
--- |
1124 |
S13.2.2_A3_T1.js |
---
info: |
When the [[Construct]] property for a Function object F is called:
A new native ECMAScript object is created.
It gets the value of the [[Prototype]] property of the F(Denote it PROTO_VAL).
If PROTO_VAL is not an object, sets the [[Prototype]] property of native ECMAScript object just created
to the original Object prototype object as described in 15.2.3.1
es5id: 13.2.2_A3_T1
description: Declaring a function with "function __FACTORY()"
--- |
1387 |
S13.2.2_A3_T2.js |
---
info: |
When the [[Construct]] property for a Function object F is called:
A new native ECMAScript object is created.
It gets the value of the [[Prototype]] property of the F(Denote it PROTO_VAL).
If PROTO_VAL is not an object, sets the [[Prototype]] property of native ECMAScript object just created
to the original Object prototype object as described in 15.2.3.1
es5id: 13.2.2_A3_T2
description: Declaring a function with "var __FACTORY = function()"
--- |
1399 |
S13.2.2_A4_T1.js |
---
info: |
When the [[Construct]] property for a Function object F is called:
A new native ECMAScript object is created.
Gets the value of the [[Prototype]] property of the F(Denote it PROTO_VAL).
If PROTO_VAL is an object, sets the [[Prototype]] property of native ECMAScript object just created
to the PROTO_VAL
es5id: 13.2.2_A4_T1
description: Declaring a function with "function __FACTORY()"
--- |
1410 |
S13.2.2_A4_T2.js |
---
info: |
When the [[Construct]] property for a Function object F is called:
A new native ECMAScript object is created.
Gets the value of the [[Prototype]] property of the F(Denote it PROTO_VAL).
If PROTO_VAL is an object, sets the [[Prototype]] property of native ECMAScript object just created
to the PROTO_VAL
es5id: 13.2.2_A4_T2
description: Declaring a function with "__FACTORY = function()"
--- |
1440 |
S13.2.2_A5_T1.js |
---
info: |
When the [[Construct]] property for a Function object F is called:
A new native ECMAScript object is created.
Invoke the [[Call]] property of F, providing native ECMAScript object just created as the this value and
providing the argument list passed into [[Construct]] as the argument values
es5id: 13.2.2_A5_T1
description: Declaring a function with "function __FACTORY(arg1, arg2)"
--- |
2787 |
S13.2.2_A5_T2.js |
---
info: |
When the [[Construct]] property for a Function object F is called:
A new native ECMAScript object is created.
Invoke the [[Call]] property of F, providing native ECMAScript object just created as the this value and
providing the argument list passed into [[Construct]] as the argument values
es5id: 13.2.2_A5_T2
description: Declaring a function with "__FACTORY = function(arg1, arg2)"
--- |
2802 |
S13.2.2_A6_T1.js |
---
info: |
When the [[Construct]] property for a Function object F is called:
A new native ECMAScript object is created.
Invoke the [[Call]] property of F, providing just created native ECMAScript object as the this value and providing the argument
list passed into [[Construct]] as the argument values.
If Type( [[Call]] returned) is not Object then return passed as this into [[Call]] object
es5id: 13.2.2_A6_T1
description: Declaring a function with "__func = function(arg)"
--- |
1423 |
S13.2.2_A6_T2.js |
---
info: |
When the [[Construct]] property for a Function object F is called:
A new native ECMAScript object is created.
Invoke the [[Call]] property of F, providing just created native ECMAScript object as the this value and providing the argument
list passed into [[Construct]] as the argument values.
If Type( [[Call]] returned) is not Object then return passed as this into [[Call]] object
es5id: 13.2.2_A6_T2
description: Declaring a function with "function __func (arg)"
--- |
1402 |
S13.2.2_A7_T1.js |
---
info: |
When the [[Construct]] property for a Function object F is called:
A new native ECMAScript object is created.
Invoke the [[Call]] property of F, providing just created native ECMAScript object as the this value and providing the argument
list passed into [[Construct]] as the argument values.
If Type( [[Call]] returned) is an Object then return this just as obtained object
es5id: 13.2.2_A7_T1
description: Declaring a function with "as __func = function(arg)"
--- |
1452 |
S13.2.2_A7_T2.js |
---
info: |
When the [[Construct]] property for a Function object F is called:
A new native ECMAScript object is created.
Invoke the [[Call]] property of F, providing just created native ECMAScript object as the this value and providing the argument
list passed into [[Construct]] as the argument values.
If Type( [[Call]] returned) is an Object then return this just as obtained object
es5id: 13.2.2_A7_T2
description: Declaring a "function as function __func (arg)"
--- |
1473 |
S13.2.2_A8_T1.js |
---
info: |
When the [[Construct]] property for a Function object F is called:
A new native ECMAScript object is created.
Invoke the [[Call]] property of F, providing just created native ECMAScript object as the this value and providing the argument
list passed into [[Construct]] as the argument values.
If Type( [[Call]] returned) is an Function then return this just as obtained function
es5id: 13.2.2_A8_T1
description: >
Creating a function whose prototype contains "return" followed by
declaration of another function
--- |
1889 |
S13.2.2_A8_T2.js |
---
info: |
When the [[Construct]] property for a Function object F is called:
A new native ECMAScript object is created.
Invoke the [[Call]] property of F, providing just created native ECMAScript object as the this value and providing the argument
list passed into [[Construct]] as the argument values.
If Type( [[Call]] returned) is an Function then return this just as obtained function
es5id: 13.2.2_A8_T2
description: >
Creating a function whose prototype contains declaration of
another function declared as a variable
--- |
1897 |
S13.2.2_A8_T3.js |
---
info: |
When the [[Construct]] property for a Function object F is called:
A new native ECMAScript object is created.
Invoke the [[Call]] property of F, providing just created native ECMAScript object as the this value and providing the argument
list passed into [[Construct]] as the argument values.
If Type( [[Call]] returned) is an Function then return this just as obtained function
es5id: 13.2.2_A8_T3
description: >
Creating a function whose prototype contains declaration of
another function defined by using Function.call method
--- |
1893 |
S13.2.2_A9.js |
---
info: |
Calling a function as a constructor is inadmissible as long as
this.any_Function is called before it is declared
es5id: 13.2.2_A9
description: Calling a function as a constructor
--- |
833 |
S13.2.2_A10.js |
---
info: |
Calling a function as a constructor is possible as long as
this.any_Function is declared
es5id: 13.2.2_A10
description: Calling a function as a constructor after it has been declared
--- |
1096 |
S13.2.2_A11.js |
---
info: |
Calling a function as a constructor is possible as long as
this.any_Function is declared and called
es5id: 13.2.2_A11
description: >
Calling a function as a constructor after it has been declared
with "function func()"
--- |
889 |
S13.2.2_A12.js |
---
info: |
Calling a function as a constructor is possible as long as
this.any_Function is declared and called
es5id: 13.2.2_A12
description: >
Calling a function as a constructor after it has been declared
with "function func()"
--- |
1160 |
S13.2.2_A13.js |
---
info: |
Calling a function as a constructor is inadmissible as long as
this.any_Function is declared by eval and called
es5id: 13.2.2_A13
description: >
Calling a function as a constructor after it has been declared by
eval
--- |
881 |
S13.2.2_A14.js |
---
info: |
Calling a function as a constructor is inadmissible as long as
this.any_Function is declared by eval and called
es5id: 13.2.2_A14
description: >
Calling a function as a constructor after it has been declared by
eval
flags: [noStrict]
--- |
850 |
S13.2.2_A15_T1.js |
---
info: |
When the [[Construct]] property for a Function object F is called,
and the object created in the function is returned, the object (declared with "this" within a function) will be strong and healthy
es5id: 13.2.2_A15_T1
description: >
Function declared at the end of the program and "obj" property is
declared with "var obj = {}"
--- |
1557 |
S13.2.2_A15_T2.js |
---
info: |
When the [[Construct]] property for a Function object F is called,
and the object created in the function is returned, the object (declared with "this" within a function) will be strong and healthy
es5id: 13.2.2_A15_T2
description: >
Function declared at the end of the program and "obj" property is
declared with "obj = {}"
--- |
1536 |
S13.2.2_A15_T3.js |
---
info: |
When the [[Construct]] property for a Function object F is called,
and the object created in the function is returned, the object (declared with "this" within a function) will be strong and healthy
es5id: 13.2.2_A15_T3
description: >
Function declared at the end of the program and "obj" property is
declared with "var obj = {}"
--- |
1579 |
S13.2.2_A15_T4.js |
---
info: |
When the [[Construct]] property for a Function object F is called,
and the object created in the function is returned, the object (declared with "this" within a function) will be strong and healthy
es5id: 13.2.2_A15_T4
description: >
Function declared at the end of the program and "obj" property is
declared with "obj = {}"
--- |
1547 |
S13.2.2_A16_T1.js |
---
info: FunctionExpression within a new statement is admitted
es5id: 13.2.2_A16_T1
description: >
Using "is __obj = new function __func(){this.prop=1;}" as
FunctionExpression
--- |
1308 |
S13.2.2_A16_T2.js |
---
info: FunctionExpression within a new statement is admitted
es5id: 13.2.2_A16_T2
description: >
Using "var __obj = new function __func(arg){this.prop=arg;}(5)" as
FunctionExpression
--- |
1325 |
S13.2.2_A16_T3.js |
---
info: FunctionExpression within a new statement is admitted
es5id: 13.2.2_A16_T3
description: >
Using "is __obj = new function __func(arg){this.prop=arg; return
{feat: ++arg}}(5)" as FunctionExpression
--- |
1623 |
S13.2.2_A17_T2.js |
---
info: FunctionExpression containing "with" statement is admitted
es5id: 13.2.2_A17_T2
description: Throwing an exception within "with" statement
flags: [noStrict]
--- |
2062 |
S13.2.2_A17_T3.js |
---
info: FunctionExpression containing "with" statement is admitted
es5id: 13.2.2_A17_T3
description: >
In the check 4 we populate field getRight in __obj object since
var getRight declaration adds variable to function scope but
getRight in statement resolves within with(__obj) scope and
searchs getRight in __obj first
flags: [noStrict]
--- |
2197 |
S13.2.2_A18_T1.js |
---
info: |
Using arguments object within a "with" Expression that is nested in a
function is admitted
es5id: 13.2.2_A18_T1
description: "Object is declared with \"var __obj={callee:\"a\"}\""
flags: [noStrict]
--- |
1659 |
S13.2.2_A18_T2.js |
---
info: |
Using arguments object within a "with" Expression that is nested in a
function is admitted
es5id: 13.2.2_A18_T2
description: "Object is declared with \"__obj={callee:\"a\"}\""
flags: [noStrict]
--- |
1667 |
S13.2.2_A19_T1.js |
---
info: Function's scope chain is started when it is declared
es5id: 13.2.2_A19_T1
description: Function is declared in the global scope
flags: [noStrict]
--- |
695 |
S13.2.2_A19_T2.js |
---
info: Function's scope chain is started when it is declared
es5id: 13.2.2_A19_T2
description: Function is declared in the object scope. Using "with" statement
flags: [noStrict]
--- |
700 |
S13.2.2_A19_T3.js |
---
info: Function's scope chain is started when it is declared
es5id: 13.2.2_A19_T3
description: >
Function is declared in the object scope and then an exception is
thrown
flags: [noStrict]
--- |
794 |
S13.2.2_A19_T4.js |
---
info: Function's scope chain is started when it is declared
es5id: 13.2.2_A19_T4
description: >
Function is declared in the hierarchical object scope and then an
exception is thrown
flags: [noStrict]
--- |
857 |
S13.2.2_A19_T5.js |
---
info: Function's scope chain is started when it is declared
es5id: 13.2.2_A19_T5
description: >
Function is declared in the object scope, then an exception is
thrown and the object is deleted
flags: [noStrict]
--- |
874 |
S13.2.2_A19_T6.js |
---
info: Function's scope chain is started when it is declared
es5id: 13.2.2_A19_T6
description: >
Function is declared in the "object->do-while" scope, then the
object is deleted and another object with the same name is declared
flags: [noStrict]
--- |
911 |
S13.2.2_A19_T7.js |
---
info: Function's scope chain is started when it is declared
es5id: 13.2.2_A19_T7
description: Function is declared in the object scope as a variable
flags: [noStrict]
--- |
1539 |
S13.2.2_A19_T8.js |
---
info: Function's scope chain is started when it is declared
es5id: 13.2.2_A19_T8
description: Function is declared multiply times
flags: [noStrict]
--- |
1805 |
S13.2_A1_T1.js |
---
info: A "prototype" property is automatically created for every function
es5id: 13.2_A1_T1
description: Using "function __func(){}" as a FunctionDeclaration
--- |
621 |
S13.2_A1_T2.js |
---
info: A "prototype" property is automatically created for every function
es5id: 13.2_A1_T2
description: Using "var __func = function(){}" as a FunctionDeclaration
--- |
633 |
S13.2_A2_T1.js |
---
info: Nested function are admitted
es5id: 13.2_A2_T1
description: Nesting level is two
--- |
696 |
S13.2_A2_T2.js |
---
info: Nested function are admitted
es5id: 13.2_A2_T2
description: Nesting level is three
--- |
761 |
S13.2_A3.js |
---
info: |
When Function object(F) is constructed the length property of F is set to
the number of formal properties specified in FormalParameterList
es5id: 13.2_A3
description: >
Creating functions with various FormalParameterList and checking
their lengths
--- |
1076 |
S13.2_A4_T1.js |
---
info: |
When Function object(F) is constructed the following steps from 9 to 11 take place
9.Create a new object as would be constructed by the expression new Object().
10. Set the constructor property of Result(9) to F. This property is given attributes { DontEnum }.
11. Set the "prototype" property of F to Result(9).
es5id: 13.2_A4_T1
description: >
Checking prototype, prototype.constructor properties and
{DontEnum} property of a constructor. Using "function __func(){}"
as a FunctionDeclaration
--- |
1919 |
S13.2_A4_T2.js |
---
info: |
When Function object(F) is constructed the following steps from 9 to 11 take place
9.Create a new object as would be constructed by the expression new Object().
10. Set the constructor property of Result(9) to F. This property is given attributes { DontEnum }.
11. Set the "prototype" property of F to Result(9).
es5id: 13.2_A4_T2
description: >
Checking prototype, prototype.constructor properties and
{DontEnum} property of a constructor. Using "var __gunc =
function(){}" as a FunctionDeclaration
--- |
1931 |
S13.2_A5.js |
---
info: |
When Function object(F) is constructed
the [[Prototype]] property of F is set to the original Function prototype object as specified in 15.3.3.1
es5id: 13.2_A5
description: Function.prototype.isPrototypeOf() is used
--- |
1046 |
S13.2_A6_T1-strict.js |
---
es5id: 13.2_A6_T1
description: check if "caller" poisoning poisons getOwnPropertyDescriptor too
flags: [onlyStrict]
--- |
347 |
S13.2_A6_T2-strict.js |
---
es5id: 13.2_A6_T2
description: >
check if "arguments" poisoning poisons getOwnPropertyDescriptor
too
flags: [onlyStrict]
--- |
363 |
S13.2_A7_T1-strict.js |
---
es5id: 13.2_A7_T1
description: check if "caller" poisoning poisons hasOwnProperty too
flags: [onlyStrict]
--- |
321 |
S13.2_A7_T2-strict.js |
---
es5id: 13.2_A7_T2
description: check if "arguments" poisoning poisons hasOwnProperty too
flags: [onlyStrict]
--- |
327 |
S13.2_A8_T1-strict.js |
---
es5id: 13.2_A8_T1
description: check if "caller" poisoning poisons "in" too
flags: [onlyStrict]
--- |
297 |
S13.2_A8_T2-strict.js |
---
es5id: 13.2_A8_T2
description: check if "arguments" poisoning poisons "in" too
flags: [onlyStrict]
--- |
303 |
S13_A1.js |
---
info: |
"x=function y(){}" statement does not store a reference to the new
function in the varaible y(Identifier)
es5id: 13_A1
description: Checking the type of y
--- |
1041 |
S13_A2_T1.js |
---
info: function must be evaluated inside the expression
es5id: 13_A2_T1
description: Defining function body with "return arg"
--- |
903 |
S13_A2_T2.js |
---
info: function must be evaluated inside the expression
es5id: 13_A2_T2
description: Defining function body with "return arg + arguments[1]"
--- |
943 |
S13_A2_T3.js |
---
info: function must be evaluated inside the expression
es5id: 13_A2_T3
description: >
Defining function body with "return arguments[0] +"-"+
arguments[1]"
--- |
992 |
S13_A3_T1.js |
---
info: |
The Identifier in a FunctionExpression can be referenced from inside the
FunctionExpression's FunctionBody to allow the function calling itself
recursively
es5id: 13_A3_T1
description: >
Creating a recursive function that calculates factorial, as a
variable. Function call itself by its name
--- |
932 |
S13_A3_T2.js |
---
info: |
The Identifier in a FunctionExpression can be referenced from inside the
FunctionExpression's FunctionBody to allow the function calling itself
recursively
es5id: 13_A3_T2
description: >
Creating a recursive function that calculates factorial, as a
variable. Function calls itself by the name of the variable
--- |
933 |
S13_A3_T3.js |
---
info: |
The Identifier in a FunctionExpression can be referenced from inside the
FunctionExpression's FunctionBody to allow the function calling itself
recursively
es5id: 13_A3_T3
description: Creating simple recursive function that calculates factorial
--- |
854 |
S13_A4_T1.js |
---
info: |
The production FunctionDeclaration: "function Identifier (
FormalParameterList_opt ) { FunctionBody }" is processed by function
declarations
es5id: 13_A4_T1
description: Declaring a function that returns string
--- |
1064 |
S13_A4_T2.js |
---
info: |
The production FunctionDeclaration: "function Identifier (
FormalParameterList_opt ) { FunctionBody }" is processed by function
declarations
es5id: 13_A4_T2
description: >
Declaring a function that uses prefix increment operator within
its "return" Expression
--- |
1084 |
S13_A4_T3.js |
---
info: |
The production FunctionDeclaration: "function Identifier (
FormalParameterList_opt ) { FunctionBody }" is processed by function
declarations
es5id: 13_A4_T3
description: >
Declaring a function that uses arithmetical operators within its
"return" Expression
--- |
1141 |
S13_A4_T4.js |
---
info: |
The production FunctionDeclaration: "function Identifier (
FormalParameterList_opt ) { FunctionBody }" is processed by function
declarations
es5id: 13_A4_T4
description: >
Declaring a function that uses strings concatenaion opeator within
its "return" Expression
--- |
2075 |
S13_A6_T1.js |
---
info: |
FunctionDeclaration can be overrided by other FunctionDeclaration with
the same Identifier
es5id: 13_A6_T1
description: Duplicating function declaration
--- |
1039 |
S13_A6_T2.js |
---
info: |
FunctionDeclaration can be overrided by other FunctionDeclaration with
the same Identifier
es5id: 13_A6_T2
description: Calling a function before it is declared one more time
--- |
1196 |
S13_A7_T1.js |
---
info: The FunctionBody must be SourceElements
es5id: 13_A7_T1
description: Using only SourceElements within the FunctionBody
--- |
2756 |
S13_A7_T3.js |
---
info: The FunctionBody must be SourceElements
es5id: 13_A7_T3
description: Checking if execution of "function __func(){\A\B\C}" fails
negative:
phase: parse
type: SyntaxError
--- |
402 |
S13_A8_T1.js |
---
info: Arguments property of activation object contains real params to be passed
es5id: 13_A8_T1
description: >
Creating a function declared with "function __func(param1, param2,
param3)" and using arguments.length property in order to perform
the test
--- |
1162 |
S13_A8_T2.js |
---
info: Arguments property of activation object contains real params to be passed
es5id: 13_A8_T2
description: >
Creating a function with no parameters and using arguments.length
property in order to perform the test
--- |
1373 |
S13_A9.js |
---
info: Function can be passed as argument
es5id: 13_A9
description: Using function as argument of another function
--- |
697 |
S13_A10.js |
---
info: Function is a data
es5id: 13_A10
description: Using function as a property of an object
--- |
1072 |
S13_A11_T1.js |
---
info: |
Since arguments property has attribute { DontDelete }, only its elements
can be deleted
es5id: 13_A11_T1
description: Returning result of "delete arguments"
flags: [noStrict]
--- |
685 |
S13_A11_T2.js |
---
info: |
Since arguments property has attribute { DontDelete }, only its elements
can be deleted
es5id: 13_A11_T2
description: >
Checking if deleting the arguments property fails and then
returning it
flags: [noStrict]
--- |
769 |
S13_A11_T3.js |
---
info: |
Since arguments property has attribute { DontDelete }, only its elements
can be deleted
es5id: 13_A11_T3
description: Deleting arguments[i] and returning result of the operation
--- |
844 |
S13_A11_T4.js |
---
info: |
Since arguments property has attribute { DontDelete }, only its elements
can be deleted
es5id: 13_A11_T4
description: Deleting arguments[i] and checking the type of arguments[i]
--- |
921 |
S13_A12_T1.js |
---
info: Function declarations in global or function scope are {DontDelete}
es5id: 13_A12_T1
description: >
Checking if deleting a function that is declared in global scope
fails
flags: [noStrict]
--- |
973 |
S13_A12_T2.js |
---
info: Function declarations in global or function scope are {DontDelete}
es5id: 13_A12_T2
description: >
Checking if deleting a function that is declared in function scope
fails
flags: [noStrict]
--- |
1085 |
S13_A13_T1.js |
---
info: Deleting arguments[i] leads to breaking the connection to local reference
es5id: 13_A13_T1
description: Deleting arguments[i]
--- |
749 |
S13_A13_T2.js |
---
info: Deleting arguments[i] leads to breaking the connection to local reference
es5id: 13_A13_T2
description: Changing arguments value and then deleting the argument
--- |
796 |
S13_A13_T3.js |
---
info: Deleting arguments[i] leads to breaking the connection to local reference
es5id: 13_A13_T3
description: >
Changing argument value, deleting the argument and then defining a
new value for arguments[i]
--- |
958 |
S13_A14_T1.js |
---
info: Unicode symbols in function name are allowed
es5id: 13_A14
description: Defining function name with unicode symbols
flags: [noStrict]
--- |
650 |
S13_A15_T1.js |
---
info: "''arguments'' variable overrides ActivationObject.arguments"
es5id: 13_A15_T1
description: Declaring a function with "__func(arguments)"
flags: [noStrict]
--- |
672 |
S13_A15_T2.js |
---
info: "''arguments'' variable overrides ActivationObject.arguments"
es5id: 13_A15_T2
description: Overriding arguments within functions body
flags: [noStrict]
--- |
767 |
S13_A15_T3.js |
---
info: "''arguments'' variable overrides ActivationObject.arguments"
es5id: 13_A15_T3
description: Declaring a variable named with "arguments" without a function
flags: [noStrict]
--- |
1225 |
S13_A15_T4.js |
---
info: "''arguments'' variable overrides ActivationObject.arguments"
es5id: 13_A15_T4
description: >
Declaring a variable named with "arguments" and following a
"return" statement within a function body
flags: [noStrict]
--- |
858 |
S13_A15_T5.js |
---
info: "''arguments'' variable overrides ActivationObject.arguments"
es5id: 13_A15_T5
description: Creating a variable named with "arguments" without a function
flags: [noStrict]
--- |
1074 |
S13_A17_T1.js |
---
info: |
Function call cannot appear in the program before the FunctionExpression
appears
es5id: 13_A17_T1
description: Trying to call a function before the FunctionExpression appears
--- |
1490 |
S13_A17_T2.js |
---
info: |
Function call cannot appear in the program before the FunctionExpression
appears
es5id: 13_A17_T2
description: >
Trying to call a function before the FunctionExpression appears
and then using the FunctionExpression one more time
--- |
1619 |
S13_A18.js |
---
info: Closures are admitted
es5id: 13_A18
description: Using a function declaration as a function parameter
--- |
1056 |
S13_A19_T1.js |
---
info: "\"var\" does not override function declaration"
es5id: 13_A19_T1
description: >
Creating a function and a variable with identical Identifiers in
global scope
--- |
1108 |
S13_A19_T2.js |
---
info: "\"var\" does not override function declaration"
es5id: 13_A19_T2
description: >
Creating a function and a variable with identical Identifiers
within function scope
--- |
1215 |
S14_A2.js |
---
info: FunctionDeclaration cannot be localed inside an Expression
es5id: 14_A2
description: Declaring a function within an "if" Expression
--- |
963 |
S14_A3.js |
---
info: |
Global FunctionDeclaration cannot be defined within the body of another
FunctionDeclaration
es5id: 14_A3
description: Declaring a function within the body of another function
--- |
1050 |
S14_A5_T1.js |
---
info: |
The Identifier within a FunctionDeclaration can be written in both letters
and unicode
es5id: 14_A5_T1
description: >
Declaring a function with "function
__\u0066\u0075\u006e\u0063(){return "both"}"
--- |
873 |
S14_A5_T2.js |
---
info: |
The Identifier within a FunctionDeclaration can be written in both letters
and unicode
es5id: 14_A5_T2
description: >
Declaring a function with "function
\u005f\u005f\u0066\u0075\u006e\u0063(){return "unicode"}"
--- |
819 |
scope-body-lex-distinct.js |
---
esid: sec-functiondeclarationinstantiation
description: >
Creation of new lexical environment (distinct from the variable
environment) for the function body outside of strict mode
info: |
[...]
29. If strict is false, then
a. Let lexEnv be NewDeclarativeEnvironment(varEnv).
b. NOTE: Non-strict functions use a separate lexical Environment Record
for top-level lexical declarations so that a direct eval can
determine whether any var scoped declarations introduced by the eval
code conflict with pre-existing top-level lexically scoped
declarations. This is not needed for strict functions because a
strict direct eval always places all declarations into a new
Environment Record.
[...]
18.2.1.3 Runtime Semantics: EvalDeclarationInstantiation
[...]
5. If strict is false, then
[...]
b. Let thisLex be lexEnv.
c. Assert: The following loop will terminate.
d. Repeat while thisLex is not the same as varEnv,
i. Let thisEnvRec be thisLex's EnvironmentRecord.
ii. If thisEnvRec is not an object Environment Record, then
1. NOTE: The environment of with statements cannot contain any
lexical declaration so it doesn't need to be checked for
var/let hoisting conflicts.
2. For each name in varNames, do
a. If thisEnvRec.HasBinding(name) is true, then
i. Throw a SyntaxError exception.
ii. NOTE: Annex B.3.5 defines alternate semantics for the
above step.
b. NOTE: A direct eval will not hoist var declaration over a
like-named lexical declaration.
iii. Let thisLex be thisLex's outer environment reference.
flags: [noStrict]
features: [let]
--- |
2160 |
scope-param-elem-var-close.js |
---
esid: sec-functiondeclarationinstantiation
description: >
sloppy direct evals in params introduce vars
info: |
[...]
20. Else,
a. NOTE: A separate Environment Record is needed to ensure that bindings created by direct eval calls in the formal parameter list are outside the environment where parameters are declared.
b. Let calleeEnv be the LexicalEnvironment of calleeContext.
c. Let env be NewDeclarativeEnvironment(calleeEnv).
d. Let envRec be env's EnvironmentRecord.
[...]
flags: [noStrict]
--- |
1058 |
scope-param-elem-var-open.js |
---
esid: sec-functiondeclarationinstantiation
description: >
sloppy direct evals in params introduce vars
info: |
[...]
20. Else,
a. NOTE: A separate Environment Record is needed to ensure that bindings created by direct eval calls in the formal parameter list are outside the environment where parameters are declared.
b. Let calleeEnv be the LexicalEnvironment of calleeContext.
c. Let env be NewDeclarativeEnvironment(calleeEnv).
d. Let envRec be env's EnvironmentRecord.
[...]
flags: [noStrict]
--- |
966 |
scope-param-rest-elem-var-close.js |
---
esid: sec-functiondeclarationinstantiation
description: >
sloppy direct evals in params introduce vars
info: |
[...]
20. Else,
a. NOTE: A separate Environment Record is needed to ensure that bindings created by direct eval calls in the formal parameter list are outside the environment where parameters are declared.
b. Let calleeEnv be the LexicalEnvironment of calleeContext.
c. Let env be NewDeclarativeEnvironment(calleeEnv).
d. Let envRec be env's EnvironmentRecord.
[...]
flags: [noStrict]
--- |
986 |
scope-param-rest-elem-var-open.js |
---
esid: sec-functiondeclarationinstantiation
description: >
sloppy direct evals in params introduce vars
info: |
[...]
20. Else,
a. NOTE: A separate Environment Record is needed to ensure that bindings created by direct eval calls in the formal parameter list are outside the environment where parameters are declared.
b. Let calleeEnv be the LexicalEnvironment of calleeContext.
c. Let env be NewDeclarativeEnvironment(calleeEnv).
d. Let envRec be env's EnvironmentRecord.
[...]
flags: [noStrict]
--- |
971 |
scope-paramsbody-var-close.js |
---
esid: sec-functiondeclarationinstantiation
description: >
Disposal of variable environment for the function body
info: |
[...]
26. If hasParameterExpressions is false, then
[...]
27. Else,
a. NOTE A separate Environment Record is needed to ensure that closures
created by expressions in the formal parameter list do not have
visibility of declarations in the function body.
b. Let varEnv be NewDeclarativeEnvironment(env).
c. Let varEnvRec be varEnv's EnvironmentRecord.
d. Set the VariableEnvironment of calleeContext to varEnv.
e. Let instantiatedVarNames be a new empty List.
[...]
--- |
1131 |
scope-paramsbody-var-open.js |
---
esid: sec-functiondeclarationinstantiation
description: >
Creation of new variable environment for the function body (as distinct from
that for the function's parameters)
info: |
[...]
26. If hasParameterExpressions is false, then
[...]
27. Else,
a. NOTE A separate Environment Record is needed to ensure that closures
created by expressions in the formal parameter list do not have
visibility of declarations in the function body.
b. Let varEnv be NewDeclarativeEnvironment(env).
c. Let varEnvRec be varEnv's EnvironmentRecord.
d. Set the VariableEnvironment of calleeContext to varEnv.
e. Let instantiatedVarNames be a new empty List.
[...]
--- |
1172 |
shell.js |
|
0 |
static-init-await-binding-invalid.js |
---
esid: sec-class-definitions-static-semantics-early-errors
description: BindingIdentifier may not be `await` within class static blocks
info: |
BindingIdentifier : Identifier
[...]
- It is a Syntax Error if the code matched by this production is nested,
directly or indirectly (but not crossing function or static initialization
block boundaries), within a ClassStaticBlock and the StringValue of
Identifier is "await".
negative:
phase: parse
type: SyntaxError
features: [class-static-block]
--- |
767 |
static-init-await-binding-valid.js |
---
esid: sec-class-definitions-static-semantics-early-errors
description: The `await` keyword is interpreted as an identifier within arrow function bodies
info: |
ClassStaticBlockBody : ClassStaticBlockStatementList
[...]
- It is a Syntax Error if ContainsAwait of ClassStaticBlockStatementList is true.
features: [class-static-block]
--- |
576 |
unscopables-with-in-nested-fn.js |
---
description: Symbol.unscopables behavior across scope boundaries (function declaration)
esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
features: [globalThis, Symbol.unscopables]
flags: [generated, noStrict]
info: |
FunctionDeclaration :
function BindingIdentifier ( FormalParameters ) { FunctionBody }
[...]
3. Let F be FunctionCreate(Normal, FormalParameters, FunctionBody,
scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
...
Let envRec be lex's EnvironmentRecord.
Let exists be ? envRec.HasBinding(name).
HasBinding
...
If the withEnvironment flag of envRec is false, return true.
Let unscopables be ? Get(bindings, @@unscopables).
If Type(unscopables) is Object, then
Let blocked be ToBoolean(? Get(unscopables, N)).
If blocked is true, return false.
(The `with` Statement) Runtime Semantics: Evaluation
...
Set the withEnvironment flag of newEnv’s EnvironmentRecord to true.
...
--- |
2796 |
unscopables-with.js |
---
description: Symbol.unscopables behavior across scope boundaries (function declaration)
esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
features: [globalThis, Symbol.unscopables]
flags: [generated, noStrict]
info: |
FunctionDeclaration :
function BindingIdentifier ( FormalParameters ) { FunctionBody }
[...]
3. Let F be FunctionCreate(Normal, FormalParameters, FunctionBody,
scope, strict).
[...]
9.2.1 [[Call]] ( thisArgument, argumentsList)
[...]
7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
[...]
9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
[...]
9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
[...]
23. Let iteratorRecord be Record {[[iterator]]:
CreateListIterator(argumentsList), [[done]]: false}.
24. If hasDuplicates is true, then
[...]
25. Else,
b. Let formalStatus be IteratorBindingInitialization for formals with
iteratorRecord and env as arguments.
[...]
...
Let envRec be lex's EnvironmentRecord.
Let exists be ? envRec.HasBinding(name).
HasBinding
...
If the withEnvironment flag of envRec is false, return true.
Let unscopables be ? Get(bindings, @@unscopables).
If Type(unscopables) is Object, then
Let blocked be ToBoolean(? Get(unscopables, N)).
If blocked is true, return false.
(The `with` Statement) Runtime Semantics: Evaluation
...
Set the withEnvironment flag of newEnv’s EnvironmentRecord to true.
...
--- |
2621 |
use-strict-with-non-simple-param.js |
---
esid: sec-function-definitions-static-semantics-early-errors
description: >
A SyntaxError is thrown if a function contains a non-simple parameter list and a UseStrict directive.
info: |
Static Semantics: Early Errors
It is a Syntax Error if ContainsUseStrict of FunctionBody is true and IsSimpleParameterList of FormalParameters is false.
negative:
phase: parse
type: SyntaxError
--- |
623 |