12.6.3_2-3-a-ii-1.js |
---
info: |
Refer 12.6.3;
The production
IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
is evaluated as follows:
es5id: 12.6.3_2-3-a-ii-1
description: >
The for Statement - (normal, V, empty) will be returned when first
Expression is an Object with value false
--- |
707 |
12.6.3_2-3-a-ii-2.js |
---
info: |
Refer 12.6.3;
The production
IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
is evaluated as follows:
es5id: 12.6.3_2-3-a-ii-2
description: >
The for Statement - (normal, V, empty) will be returned when first
Expression is a Boolean object
--- |
706 |
12.6.3_2-3-a-ii-3.js |
---
info: |
Refer 12.6.3;
The production
IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
is evaluated as follows:
es5id: 12.6.3_2-3-a-ii-3
description: >
The for Statement - (normal, V, empty) will be returned when first
Expression is a Number object (value is NaN)
--- |
715 |
12.6.3_2-3-a-ii-4.js |
---
info: |
Refer 12.6.3;
The production
IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
is evaluated as follows:
es5id: 12.6.3_2-3-a-ii-4
description: >
The for Statement - (normal, V, empty) will be returned when first
Expression is a Number object (value is +0)
--- |
713 |
12.6.3_2-3-a-ii-5.js |
---
info: |
Refer 12.6.3;
The production
IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
is evaluated as follows:
es5id: 12.6.3_2-3-a-ii-5
description: >
The for Statement - (normal, V, empty) will be returned when first
Expression is a Number object (value is -0)
--- |
713 |
12.6.3_2-3-a-ii-6.js |
---
info: |
Refer 12.6.3;
The production
IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
is evaluated as follows:
es5id: 12.6.3_2-3-a-ii-6
description: >
The for Statement - (normal, V, empty) will be returned when first
Expression is a Number object (value is a positive)
--- |
721 |
12.6.3_2-3-a-ii-7.js |
---
info: |
Refer 12.6.3;
The production
IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
is evaluated as follows:
es5id: 12.6.3_2-3-a-ii-7
description: >
The for Statement - (normal, V, empty) will be returned when first
Expression is a String object (value is empty string)
--- |
723 |
12.6.3_2-3-a-ii-8.js |
---
info: |
Refer 12.6.3;
The production
IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
is evaluated as follows:
es5id: 12.6.3_2-3-a-ii-8
description: >
The for Statement - (normal, V, empty) will be returned when first
Expression is a String object (value is 'undefined')
--- |
731 |
12.6.3_2-3-a-ii-9.js |
---
info: |
Refer 12.6.3;
The production
IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
is evaluated as follows:
es5id: 12.6.3_2-3-a-ii-9
description: >
The for Statement - (normal, V, empty) will be returned when first
Expression is a String object (value is 'null')
--- |
721 |
12.6.3_2-3-a-ii-10.js |
---
info: |
Refer 12.6.3;
The production
IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
is evaluated as follows:
es5id: 12.6.3_2-3-a-ii-10
description: >
The for Statement - (normal, V, empty) will be returned when first
Expression is a String object (value is '1')
--- |
716 |
12.6.3_2-3-a-ii-11.js |
---
info: |
Refer 12.6.3;
The production
IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
is evaluated as follows:
es5id: 12.6.3_2-3-a-ii-11
description: >
The for Statement - (normal, V, empty) will be returned when first
Expression is undefined
--- |
624 |
12.6.3_2-3-a-ii-12.js |
---
info: |
Refer 12.6.3;
The production
IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
is evaluated as follows:
es5id: 12.6.3_2-3-a-ii-12
description: >
The for Statement - (normal, V, empty) will be returned when first
Expression is null
--- |
614 |
12.6.3_2-3-a-ii-13.js |
---
info: |
Refer 12.6.3;
The production
IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
is evaluated as follows:
es5id: 12.6.3_2-3-a-ii-13
description: >
The for Statement - (normal, V, empty) will be returned when first
Expression is a boolean (value is false)
--- |
637 |
12.6.3_2-3-a-ii-14.js |
---
info: |
Refer 12.6.3;
The production
IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
is evaluated as follows:
es5id: 12.6.3_2-3-a-ii-14
description: >
The for Statement - (normal, V, empty) will be returned when first
Expression is a number (value is NaN)
--- |
632 |
12.6.3_2-3-a-ii-15.js |
---
info: |
Refer 12.6.3;
The production
IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
is evaluated as follows:
es5id: 12.6.3_2-3-a-ii-15
description: >
The for Statement - (normal, V, empty) will be returned when first
Expression is a number (value is +0)
--- |
630 |
12.6.3_2-3-a-ii-16.js |
---
info: |
Refer 12.6.3;
The production
IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
is evaluated as follows:
es5id: 12.6.3_2-3-a-ii-16
description: >
The for Statement - (normal, V, empty) will be returned when first
Expression is a number (value is -0)
--- |
630 |
12.6.3_2-3-a-ii-17.js |
---
info: |
Refer 12.6.3;
The production
IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
is evaluated as follows:
es5id: 12.6.3_2-3-a-ii-17
description: >
The for Statement - (normal, V, empty) will be returned when first
Expression is a number (value is a positive)
--- |
673 |
12.6.3_2-3-a-ii-18.js |
---
info: |
Refer 12.6.3;
The production
IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
is evaluated as follows:
es5id: 12.6.3_2-3-a-ii-18
description: >
The for Statement - (normal, V, empty) will be returned when first
Expression is a string (value is empty string)
--- |
640 |
12.6.3_2-3-a-ii-19.js |
---
info: |
Refer 12.6.3;
The production
IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
is evaluated as follows:
es5id: 12.6.3_2-3-a-ii-19
description: >
The for Statement - (normal, V, empty) will be returned when first
Expression is a string (value is 'undefined')
--- |
684 |
12.6.3_2-3-a-ii-20.js |
---
info: |
Refer 12.6.3;
The production
IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
is evaluated as follows:
es5id: 12.6.3_2-3-a-ii-20
description: >
The for Statement - (normal, V, empty) will be returned when first
Expression is a string (value is 'null')
--- |
674 |
12.6.3_2-3-a-ii-21.js |
---
info: |
Refer 12.6.3;
The production
IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
is evaluated as follows:
es5id: 12.6.3_2-3-a-ii-21
description: >
The for Statement - (normal, V, empty) will be returned when first
Expression is a string (value is '1')
--- |
668 |
browser.js |
|
0 |
cptn-decl-expr-iter.js |
---
es6id: 13.7.4.7
description: >
Completion value when head has a declaration and a "test" expression and iteration occurs
info: |
IterationStatement :
for ( var VariableDeclarationList ; Expressionopt ; Expressionopt ) Statement
1. Let varDcl be the result of evaluating VariableDeclarationList.
2. ReturnIfAbrupt(varDcl).
3. Return ForBodyEvaluation(the first Expression, the second Expression,
Statement, « », labelSet).
13.7.4.8 Runtime Semantics: ForBodyEvaluation
1. Let V = undefined.
[...]
4. Repeat
a. If test is not [empty], then
i. Let testRef be the result of evaluating test.
ii. Let testValue be GetValue(testRef).
iii. ReturnIfAbrupt(testValue).
iv. If ToBoolean(testValue) is false, return NormalCompletion(V).
--- |
1175 |
cptn-decl-expr-no-iter.js |
---
es6id: 13.7.4.7
description: >
Completion value when head has a declaration and a "test" expression and no iteration occurs
info: |
IterationStatement :
for ( var VariableDeclarationList ; Expressionopt ; Expressionopt ) Statement
1. Let varDcl be the result of evaluating VariableDeclarationList.
2. ReturnIfAbrupt(varDcl).
3. Return ForBodyEvaluation(the first Expression, the second Expression,
Statement, « », labelSet).
13.7.4.8 Runtime Semantics: ForBodyEvaluation
1. Let V = undefined.
[...]
4. Repeat
a. If test is not [empty], then
i. Let testRef be the result of evaluating test.
ii. Let testValue be GetValue(testRef).
iii. ReturnIfAbrupt(testValue).
iv. If ToBoolean(testValue) is false, return NormalCompletion(V).
--- |
1152 |
cptn-expr-expr-iter.js |
---
es6id: 13.7.4.7
description: >
Completion value when head has no declaration and a "test" expression and
iteration occurs
info: |
IterationStatement :
for ( Expressionopt ; Expressionopt ; Expressionopt ) Statement
1. If the first Expression is present, then
a. Let exprRef be the result of evaluating the first Expression.
b. Let exprValue be GetValue(exprRef).
c. ReturnIfAbrupt(exprValue).
2. Return ForBodyEvaluation(the second Expression, the third Expression,
Statement, « », labelSet).
13.7.4.8 Runtime Semantics: ForBodyEvaluation
1. Let V = undefined.
[...]
4. Repeat
a. If test is not [empty], then
i. Let testRef be the result of evaluating test.
ii. Let testValue be GetValue(testRef).
iii. ReturnIfAbrupt(testValue).
iv. If ToBoolean(testValue) is false, return NormalCompletion(V).
--- |
1279 |
cptn-expr-expr-no-iter.js |
---
es6id: 13.7.4.7
description: >
Completion value when head has no declaration and a "test" expression and no iteration occurs
info: |
IterationStatement :
for ( Expressionopt ; Expressionopt ; Expressionopt ) Statement
1. If the first Expression is present, then
a. Let exprRef be the result of evaluating the first Expression.
b. Let exprValue be GetValue(exprRef).
c. ReturnIfAbrupt(exprValue).
2. Return ForBodyEvaluation(the second Expression, the third Expression,
Statement, « », labelSet).
13.7.4.8 Runtime Semantics: ForBodyEvaluation
1. Let V = undefined.
[...]
4. Repeat
a. If test is not [empty], then
i. Let testRef be the result of evaluating test.
ii. Let testValue be GetValue(testRef).
iii. ReturnIfAbrupt(testValue).
iv. If ToBoolean(testValue) is false, return NormalCompletion(V).
--- |
1216 |
decl-async-fun.js |
---
esid: sec-for-statement
description: >
AsyncFunctionDeclaration is not allowed in statement position
info: |
ExpressionStatement[Yield, Await] :
[lookahead ∉ { {, function, async [no LineTerminator here] function, class, let [ }]
Expression[+In, ?Yield, ?Await] ;
negative:
phase: parse
type: SyntaxError
features: [async-functions]
--- |
584 |
decl-async-gen.js |
---
esid: sec-for-statement
description: >
AsyncGeneratorDeclaration is not allowed in statement position
info: |
ExpressionStatement[Yield, Await] :
[lookahead ∉ { {, function, async [no LineTerminator here] function, class, let [ }]
Expression[+In, ?Yield, ?Await] ;
negative:
phase: parse
type: SyntaxError
features: [async-iteration]
--- |
586 |
decl-cls.js |
---
description: Class declaration not allowed in statement position
esid: sec-for-statement
es6id: 13.7.4
negative:
phase: parse
type: SyntaxError
--- |
377 |
decl-const.js |
---
description: Lexical declaration (const) not allowed in statement position
esid: sec-for-statement
es6id: 13.7.4
negative:
phase: parse
type: SyntaxError
--- |
392 |
decl-fun.js |
---
description: Function declaration not allowed in statement position
esid: sec-for-statement
es6id: 13.7.4
negative:
phase: parse
type: SyntaxError
--- |
385 |
decl-gen.js |
---
description: Generator declaration not allowed in statement position
esid: sec-for-statement
es6id: 13.7.4
negative:
phase: parse
type: SyntaxError
features: [generators]
--- |
410 |
decl-let.js |
---
description: Lexical declaration (let) not allowed in statement position
esid: sec-for-statement
es6id: 13.7.4
negative:
phase: parse
type: SyntaxError
--- |
381 |
dstr |
|
|
head-const-bound-names-in-stmt.js |
---
description: The body may not re-declare variables declared in the head
info: |
IterationStatement :
for ( LexicalDeclaration Expressionopt ; Expressionopt ) Statement
It is a Syntax Error if any element of the BoundNames of LexicalDeclaration
also occurs in the VarDeclaredNames of Statement.
negative:
phase: parse
type: SyntaxError
esid: sec-for-statement
es6id: 13.7.4
--- |
639 |
head-const-fresh-binding-per-iteration.js |
---
es6id: 13.6.4.13
description: >
const ForDeclaration: creates a fresh binding per iteration
--- |
390 |
head-init-async-of.js |
---
description: for statement beginning with `async of`
info: |
`for (async of =>` is the begining of a regular for loop, rather than a for-of
esid: sec-for-statement
--- |
441 |
head-init-expr-check-empty-inc-empty-completion.js |
---
info: |
The result of evaluating "for( ExpNoIn;Exp;Exp)" loop is returning
(normal, evalValue, empty)
es5id: 12.6.3_A9.1
description: Using eval
--- |
543 |
head-init-expr-check-empty-inc-empty-syntax.js |
---
description: For head may omit optional expressions
es5id: 12.6.3_A9.1
--- |
319 |
head-init-var-check-empty-inc-empty-completion.js |
---
info: |
The result of evaluating "for(var ExpNoIn;Exp;Exp)" loop is returning
(normal, evalValue, empty)
es5id: 12.6.3_A9
description: Using eval
--- |
534 |
head-init-var-check-empty-inc-empty-syntax.js |
---
description: For head may omit optional expressions
es5id: 12.6.3_A9
--- |
308 |
head-let-bound-names-in-stmt.js |
---
description: The body may not re-declare variables declared in the head
info: |
IterationStatement :
for ( LexicalDeclaration Expressionopt ; Expressionopt ) Statement
It is a Syntax Error if any element of the BoundNames of LexicalDeclaration
also occurs in the VarDeclaredNames of Statement.
negative:
phase: parse
type: SyntaxError
esid: sec-for-statement
es6id: 13.7.4
--- |
633 |
head-let-destructuring.js |
---
esid: sec-iteration-statements
es6id: 13.7
description: >
The token sequence `let [`is interpreted as the beginning of a destructuring
binding pattern
info: |
Syntax
IterationStatement[Yield, Return]:
for ( [lookahead ∉ { let [ } ] Expression[~In, ?Yield]opt ;
Expression[+In, ?Yield]opt ; Expression[+In, ?Yield]opt )
Statement[?Yield, ?Return]
for ( LexicalDeclaration[~In, ?Yield] Expression[+In, ?Yield]opt ;
Expression[+In, ?Yield]opt) Statement[?Yield, ?Return]
--- |
841 |
head-let-fresh-binding-per-iteration.js |
---
es6id: 13.6.4.13
description: >
let ForDeclaration: creates a fresh binding per iteration
--- |
386 |
head-lhs-let.js |
---
esid: sec-iteration-statements
es6id: 13.7
description: >
The `let` token is interpreted as an Identifier when it is not followed by a
`[` token
info: |
Syntax
IterationStatement[Yield, Return]:
for ( [lookahead ∉ { let [ } ] Expression[~In, ?Yield]opt ;
Expression[+In, ?Yield]opt ; Expression[+In, ?Yield]opt )
Statement[?Yield, ?Return]
for ( LexicalDeclaration[~In, ?Yield] Expression[+In, ?Yield]opt ;
Expression[+In, ?Yield]opt) Statement[?Yield, ?Return]
flags: [noStrict]
--- |
960 |
head-var-bound-names-in-stmt.js |
---
description: The body may re-declare variables declared in the head
esid: sec-for-statement
es6id: 13.7.4
--- |
415 |
labelled-fn-stmt-const.js |
---
description: It is a Syntax Error if IsLabelledFunction(Statement) is true.
negative:
phase: parse
type: SyntaxError
esid: sec-semantics-static-semantics-early-errors
es6id: 13.7.1.1
info: |
Although Annex B describes an extension which permits labelled function
declarations outside of strict mode, this early error is applied regardless
of the language mode.
--- |
637 |
labelled-fn-stmt-expr.js |
---
description: It is a Syntax Error if IsLabelledFunction(Statement) is true.
negative:
phase: parse
type: SyntaxError
esid: sec-semantics-static-semantics-early-errors
es6id: 13.7.1.1
info: |
Although Annex B describes an extension which permits labelled function
declarations outside of strict mode, this early error is applied regardless
of the language mode.
--- |
627 |
labelled-fn-stmt-let.js |
---
description: It is a Syntax Error if IsLabelledFunction(Statement) is true.
negative:
phase: parse
type: SyntaxError
esid: sec-semantics-static-semantics-early-errors
es6id: 13.7.1.1
info: |
Although Annex B describes an extension which permits labelled function
declarations outside of strict mode, this early error is applied regardless
of the language mode.
--- |
631 |
labelled-fn-stmt-var.js |
---
description: It is a Syntax Error if IsLabelledFunction(Statement) is true.
negative:
phase: parse
type: SyntaxError
esid: sec-semantics-static-semantics-early-errors
es6id: 13.7.1.1
info: |
Although Annex B describes an extension which permits labelled function
declarations outside of strict mode, this early error is applied regardless
of the language mode.
--- |
631 |
let-array-with-newline.js |
---
esid: sec-for-statement
description: >
ExpressionStatement has a lookahead restriction for `let [`.
info: |
ExpressionStatement[Yield, Await] :
[lookahead ∉ { {, function, async [no LineTerminator here] function, class, let [ }]
Expression[+In, ?Yield, ?Await] ;
negative:
phase: parse
type: SyntaxError
flags: [noStrict]
--- |
563 |
let-block-with-newline.js |
---
esid: sec-for-statement
description: >
ExpressionStatement doesn't have a lookahead restriction for `let {`.
info: |
ExpressionStatement[Yield, Await] :
[lookahead ∉ { {, function, async [no LineTerminator here] function, class, let [ }]
Expression[+In, ?Yield, ?Await] ;
flags: [noStrict]
--- |
500 |
let-identifier-with-newline.js |
---
esid: sec-for-statement
description: >
ExpressionStatement doesn't have a lookahead restriction for `let <binding-identifier>`.
info: |
ExpressionStatement[Yield, Await] :
[lookahead ∉ { {, function, async [no LineTerminator here] function, class, let [ }]
Expression[+In, ?Yield, ?Await] ;
flags: [noStrict]
--- |
523 |
S12.6.3_A1.js |
---
info: |
The "for {;;}" for Statement with empty expressions is allowed and leads
to performing an infinite loop
es5id: 12.6.3_A1
description: Breaking an infinite loop by throwing exception
--- |
1029 |
S12.6.3_A2.1.js |
---
info: |
While evaluating "for (ExpressionNoIn ; ; Expression) Statement",
Statement is evaulated first
es5id: 12.6.3_A2.1
description: Using "(function(){throw "NoInExpression"})()" as ExpressionNoIn
--- |
945 |
S12.6.3_A2.2.js |
---
info: |
While evaluating "for (ExpressionNoIn;;) Statement", Statement is
evaulated first
es5id: 12.6.3_A2.2
description: Using "(function(){throw "NoInExpression"})()" as ExpressionNoIn
--- |
880 |
S12.6.3_A2.js |
---
info: |
While evaluating "for (ExpressionNoIn; Expression; Expression)
Statement", ExpressionNoIn is evaulated first
es5id: 12.6.3_A2
description: Using "(function(){throw "NoInExpression"})()" as ExpressionNoIn
--- |
1301 |
S12.6.3_A3.js |
---
info: |
While evaluating "for (ExpressionNoIn; FirstExpression; SecondExpression)
Statement", ExpressionNoIn is evaulated first, FirstExpressoin is
evaluated second
es5id: 12.6.3_A3
description: Using "(function(){throw "FirstExpression"})()" as FirstExpression
--- |
1910 |
S12.6.3_A4.1.js |
---
info: |
"in"-expression is not allowed as a ExpressionNoIn in "for
(ExpressionNoIn; FirstExpression; SecondExpression) Statement"
IterationStatement
es5id: 12.6.3_A4.1
description: Checking if execution of "for (var a in arr;1;){}" fails
negative:
phase: parse
type: SyntaxError
--- |
718 |
S12.6.3_A4_T1.js |
---
info: |
"in"-expression is not allowed as a ExpressionNoIn in "for
(ExpressionNoIn; FirstExpression; SecondExpression) Statement"
IterationStatement
es5id: 12.6.3_A4_T1
description: Checking if execution of "for (a in arr;1;){}" fails
negative:
phase: parse
type: SyntaxError
--- |
711 |
S12.6.3_A4_T2.js |
---
info: |
"in"-expression is not allowed as a ExpressionNoIn in "for
(ExpressionNoIn; FirstExpression; SecondExpression) Statement"
IterationStatement
es5id: 12.6.3_A4_T2
description: Checking if execution of "for (1 in arr;1;){}" fails
negative:
phase: parse
type: SyntaxError
--- |
711 |
S12.6.3_A5.js |
---
info: |
"in"-expression wrapped into "eval" statement is allowed as a
ExpressionNoIn in "for (ExpressionNoIn; FirstExpression;
SecondExpression) Statement" IterationStatement
es5id: 12.6.3_A5
description: Using eval "for(eval("i in arr");1;)"
--- |
1493 |
S12.6.3_A6.js |
---
info: |
While evaluating "for ( ; ; Expression) Statement", Statement is
evaluated first and then Expression is evaluated
es5id: 12.6.3_A6
description: Using "(function(){throw "SecondExpression";})()" as an Expression
--- |
1253 |
S12.6.3_A7.1_T1.js |
---
info: |
Only three expressions and two semicolons in "for(with var)" braces are allowed.
Appearing of for (ExpressionNoIn_opt ; Expression_opt ; Expression_opt; Expression_opt; Expression_opt;) statement leads to SyntaxError
es5id: 12.6.3_A7.1_T1
description: >
Checking if execution of "for(var index=0; index<10; index++;
index--)" fails
negative:
phase: parse
type: SyntaxError
--- |
814 |
S12.6.3_A7.1_T2.js |
---
info: |
Only three expressions and two semicolons in "for(with var)" braces are allowed.
Appearing of for (ExpressionNoIn_opt ; Expression_opt ; Expression_opt; Expression_opt; Expression_opt;) statement leads to SyntaxError
es5id: 12.6.3_A7.1_T2
description: >
Checking if execution of "for(var index=0; index<10; index+=4;
index++; index--)" fails
negative:
phase: parse
type: SyntaxError
--- |
835 |
S12.6.3_A7_T1.js |
---
info: |
Only three expressions and two semicolons in "for" braces are allowed.
Appearing of for (ExpressionNoIn_opt ; Expression_opt ; Expression_opt; Expression_opt; Expression_opt;) statement leads to SyntaxError
es5id: 12.6.3_A7_T1
description: >
Checking if execution of "for(index=0; index<10; index++;
index--)" fails
negative:
phase: parse
type: SyntaxError
--- |
795 |
S12.6.3_A7_T2.js |
---
info: |
Only three expressions and two semicolons in "for" braces are allowed.
Appearing of for (ExpressionNoIn_opt ; Expression_opt ; Expression_opt; Expression_opt; Expression_opt;) statement leads to SyntaxError
es5id: 12.6.3_A7_T2
description: >
Checking if execution of "for(index=0; index<10; index+=4;
index++; index--)" fails
negative:
phase: parse
type: SyntaxError
--- |
815 |
S12.6.3_A8.1_T1.js |
---
info: Blocks within "for(with var)" braces are not allowed
es5id: 12.6.3_A8.1_T1
description: >
Checking if execution of "for(var index=0; index<100; {index++;
index*2;}) { arr.add(""+index);}" fails
negative:
phase: parse
type: SyntaxError
--- |
708 |
S12.6.3_A8.1_T2.js |
---
info: Blocks within "for(with var)" braces are not allowed
es5id: 12.6.3_A8.1_T2
description: >
Checking if execution of "for(var index=0; {index++;index<100;};
index*2;) { arr.add(""+index);}" fails
negative:
phase: parse
type: SyntaxError
--- |
708 |
S12.6.3_A8.1_T3.js |
---
info: Blocks within "for(with var)" braces are not allowed
es5id: 12.6.3_A8.1_T3
description: >
Checking if execution of "for({var index=0; index+=1;}
index++<=10; index*2;) { arr.add(""+index);}" fails
negative:
phase: parse
type: SyntaxError
--- |
713 |
S12.6.3_A8_T1.js |
---
info: Blocks within "for" braces are not allowed
es5id: 12.6.3_A8_T1
description: >
Checking if execution of "for(index=0; index<100; {index++;
index*2;}) { arr.add(""+index);}" fails
negative:
phase: parse
type: SyntaxError
--- |
688 |
S12.6.3_A8_T2.js |
---
info: Blocks within "for" braces are not allowed
es5id: 12.6.3_A8_T2
description: >
Checking if execution of "for(index=0; {index++;index<100;};
index*2;) { arr.add(""+index);}" fails
negative:
phase: parse
type: SyntaxError
--- |
688 |
S12.6.3_A8_T3.js |
---
info: Blocks within "for" braces are not allowed
es5id: 12.6.3_A8_T3
description: >
Checking if execution of "for({index=0; index+=1;} index++<=10;
index*2;) { arr.add(""+index);}" fails
negative:
phase: parse
type: SyntaxError
--- |
693 |
S12.6.3_A10.1_T1.js |
---
info: Nested "var-loops" nine blocks depth is evaluated properly
es5id: 12.6.3_A10.1
description: >
Checking if executing nested "var-loops" nine blocks depth is
evaluated properly
flags: [noStrict]
--- |
3744 |
S12.6.3_A10.1_T2.js |
---
info: Nested "var-loops" nine blocks depth is evaluated properly
es5id: 12.6.3_A10.1
description: >
Checking if executing nested "var-loops" nine blocks depth is
evaluated properly
--- |
3762 |
S12.6.3_A10_T1.js |
---
info: Nested "var-loops" nine blocks depth is evaluated properly
es5id: 12.6.3_A10
description: >
Checking if executing nested "var-loops" nine blocks depth is
evaluated properly
flags: [noStrict]
--- |
1958 |
S12.6.3_A10_T2.js |
---
info: Nested "var-loops" nine blocks depth is evaluated properly
es5id: 12.6.3_A10
description: >
Checking if executing nested "var-loops" nine blocks depth is
evaluated properly
--- |
2024 |
S12.6.3_A11.1_T1.js |
---
info: |
If (Evaluate Statement).type is "continue" and (Evaluate
Statement).target is in the current label set, iteration of labeled
"var-loop" breaks
es5id: 12.6.3_A11.1_T1
description: Using "continue" in order to continue a loop
--- |
617 |
S12.6.3_A11.1_T2.js |
---
info: |
If (Evaluate Statement).type is "continue" and (Evaluate
Statement).target is in the current label set, iteration of labeled
"var-loop" breaks
es5id: 12.6.3_A11.1_T2
description: Embedded loops
--- |
1877 |
S12.6.3_A11.1_T3.js |
---
info: |
If (Evaluate Statement).type is "continue" and (Evaluate
Statement).target is in the current label set, iteration of labeled
"var-loop" breaks
es5id: 12.6.3_A11.1_T3
description: Trying to continue non-existent label
negative:
phase: parse
type: SyntaxError
--- |
847 |
S12.6.3_A11_T1.js |
---
info: |
If (Evaluate Statement).type is "continue" and (Evaluate
Statement).target is in the current label set, iteration of labeled loop
breaks
es5id: 12.6.3_A11_T1
description: Simple test of continue loop with using "continue"
--- |
618 |
S12.6.3_A11_T2.js |
---
info: |
If (Evaluate Statement).type is "continue" and (Evaluate
Statement).target is in the current label set, iteration of labeled loop
breaks
es5id: 12.6.3_A11_T2
description: Embedded loops
--- |
1861 |
S12.6.3_A11_T3.js |
---
info: |
If (Evaluate Statement).type is "continue" and (Evaluate
Statement).target is in the current label set, iteration of labeled loop
breaks
es5id: 12.6.3_A11_T3
description: Trying to continue non-existent label
negative:
phase: parse
type: SyntaxError
--- |
830 |
S12.6.3_A12.1_T1.js |
---
info: |
If (Evaluate Statement).type is "break" and (Evaluate Statement).target
is in the current label set, (normal, (Evaluate Statement), empty) is
returned while evaluating a "var-loop"
es5id: 12.6.3_A12.1_T1
description: Breaking a loop with "break"
--- |
638 |
S12.6.3_A12.1_T2.js |
---
info: |
If (Evaluate Statement).type is "break" and (Evaluate Statement).target
is in the current label set, (normal, (Evaluate Statement), empty) is
returned while evaluating a "var-loop"
es5id: 12.6.3_A12.1_T2
description: Embedded loops
--- |
1879 |
S12.6.3_A12.1_T3.js |
---
info: |
If (Evaluate Statement).type is "break" and (Evaluate Statement).target
is in the current label set, (normal, (Evaluate Statement), empty) is
returned while evaluating a "var-loop"
es5id: 12.6.3_A12.1_T3
description: Trying to break non-existent label
negative:
phase: parse
type: SyntaxError
--- |
879 |
S12.6.3_A12_T1.js |
---
info: |
If (Evaluate Statement).type is "break" and (Evaluate Statement).target
is in the current label set, (normal, (Evaluate Statement), empty) is
returned while evaluating a loop
es5id: 12.6.3_A12_T1
description: Breaking a loop with "break"
--- |
630 |
S12.6.3_A12_T2.js |
---
info: |
If (Evaluate Statement).type is "break" and (Evaluate Statement).target
is in the current label set, (normal, (Evaluate Statement), empty) is
returned while evaluating a loop
es5id: 12.6.3_A12_T2
description: Embedded loops
--- |
1863 |
S12.6.3_A12_T3.js |
---
info: |
If (Evaluate Statement).type is "break" and (Evaluate Statement).target
is in the current label set, (normal, (Evaluate Statement), empty) is
returned while evaluating a loop
es5id: 12.6.3_A12_T3
description: Trying to break non-existent label
negative:
phase: parse
type: SyntaxError
--- |
864 |
S12.6.3_A13.js |
---
info: |
VariableDeclaration in "var VariableDeclarationListNoIn" of for
IterationStatement is allowed
es5id: 12.6.3_A13
description: Declaring variable in "for" ExpressionNoIn
--- |
731 |
S12.6.3_A14.js |
---
info: |
The production IterationStatement: "for (var VariableDeclarationListNoIn;
Expression; Expression) Statement"
es5id: 12.6.3_A14
description: Using +,*,/, as the second Expression
--- |
1276 |
S12.6.3_A15.js |
---
info: |
The production IterationStatement: "for (var VariableDeclarationListNoIn;
Expression; Expression) Statement"
es5id: 12.6.3_A15
description: Statement must be evaluated before second Expression is evaluated
--- |
611 |
scope-body-lex-boundary.js |
---
esid: sec-for-statement-runtime-semantics-labelledevaluation
description: >
Creation of new lexical environment for each evaluation of the statement
body
info: |
[...]
11. Let bodyResult be ForBodyEvaluation(the first Expression, the second
Expression, Statement, perIterationLets, labelSet).
[...]
13.7.4.8 Runtime Semantics: ForBodyEvaluation
[...]
3. Repeat
[...]
b. Let result be the result of evaluating stmt.
[...]
e. Perform ? CreatePerIterationEnvironment(perIterationBindings).
[...]
13.7.4.9 Runtime Semantics: CreatePerIterationEnvironment
1. If perIterationBindings has any elements, then
[...]
e. Let thisIterationEnv be NewDeclarativeEnvironment(outer).
f. Let thisIterationEnvRec be thisIterationEnv's EnvironmentRecord.
features: [let]
--- |
1330 |
scope-body-lex-open.js |
---
esid: sec-for-statement-runtime-semantics-labelledevaluation
description: >
Creation of new lexical environment for the initial evaluation of the
statement body
info: |
[...]
11. Let bodyResult be ForBodyEvaluation(the first Expression, the second
Expression, Statement, perIterationLets, labelSet).
[...]
13.7.4.8 Runtime Semantics: ForBodyEvaluation
[...]
2. Perform ? CreatePerIterationEnvironment(perIterationBindings).
3. Repeat
[...]
b. Let result be the result of evaluating stmt.
[...]
[...]
13.7.4.9 Runtime Semantics: CreatePerIterationEnvironment
1. If perIterationBindings has any elements, then
[...]
e. Let thisIterationEnv be NewDeclarativeEnvironment(outer).
f. Let thisIterationEnvRec be thisIterationEnv's EnvironmentRecord.
features: [let]
--- |
1612 |
scope-body-var-none.js |
---
esid: sec-for-statement-runtime-semantics-labelledevaluation
description: >
No variable environment is created for each evaluation of the statement
body
info: |
[...]
11. Let bodyResult be ForBodyEvaluation(the first Expression, the second
Expression, Statement, perIterationLets, labelSet).
[...]
13.7.4.8 Runtime Semantics: ForBodyEvaluation
[...]
2. Perform ? CreatePerIterationEnvironment(perIterationBindings).
3. Repeat
[...]
b. Let result be the result of evaluating stmt.
[...]
e. Perform ? CreatePerIterationEnvironment(perIterationBindings).
[...]
13.7.4.9 Runtime Semantics: CreatePerIterationEnvironment
1. If perIterationBindings has any elements, then
[...]
e. Let thisIterationEnv be NewDeclarativeEnvironment(outer).
f. Let thisIterationEnvRec be thisIterationEnv's EnvironmentRecord.
flags: [noStrict]
--- |
2853 |
scope-head-lex-close.js |
---
esid: sec-for-statement-runtime-semantics-labelledevaluation
description: Removal of lexical environment for the statement "head"
info: |
[...]
2. Let loopEnv be NewDeclarativeEnvironment(oldEnv).
3. Let loopEnvRec be loopEnv's EnvironmentRecord.
4. Let isConst be the result of performing IsConstantDeclaration of
LexicalDeclaration.
5. Let boundNames be the BoundNames of LexicalDeclaration.
6. For each element dn of boundNames do
a. If isConst is true, then
i. Perform ! loopEnvRec.CreateImmutableBinding(dn, true).
b. Else,
i. Perform ! loopEnvRec.CreateMutableBinding(dn, false).
7. Set the running execution context's LexicalEnvironment to loopEnv.
[...]
12. Set the running execution context's LexicalEnvironment to oldEnv.
13. Return Completion(bodyResult).
features: [let]
--- |
1549 |
scope-head-lex-open.js |
---
esid: sec-for-statement-runtime-semantics-labelledevaluation
description: Creation of new lexical environment for the statement "head"
info: |
[...]
2. Let loopEnv be NewDeclarativeEnvironment(oldEnv).
3. Let loopEnvRec be loopEnv's EnvironmentRecord.
4. Let isConst be the result of performing IsConstantDeclaration of
LexicalDeclaration.
5. Let boundNames be the BoundNames of LexicalDeclaration.
6. For each element dn of boundNames do
a. If isConst is true, then
i. Perform ! loopEnvRec.CreateImmutableBinding(dn, true).
b. Else,
i. Perform ! loopEnvRec.CreateMutableBinding(dn, false).
7. Set the running execution context's LexicalEnvironment to loopEnv.
[...]
features: [let]
--- |
1628 |
scope-head-var-none.js |
---
esid: sec-for-statement-runtime-semantics-labelledevaluation
description: No variable environment is created for the statement "head"
info: |
[...]
2. Let loopEnv be NewDeclarativeEnvironment(oldEnv).
3. Let loopEnvRec be loopEnv's EnvironmentRecord.
4. Let isConst be the result of performing IsConstantDeclaration of
LexicalDeclaration.
5. Let boundNames be the BoundNames of LexicalDeclaration.
6. For each element dn of boundNames do
a. If isConst is true, then
i. Perform ! loopEnvRec.CreateImmutableBinding(dn, true).
b. Else,
i. Perform ! loopEnvRec.CreateMutableBinding(dn, false).
7. Set the running execution context's LexicalEnvironment to loopEnv.
[...]
12. Set the running execution context's LexicalEnvironment to oldEnv.
13. Return Completion(bodyResult).
flags: [noStrict]
--- |
1675 |
shell.js |
---
description: |
This defines the number of consecutive recursive function calls that must be
made in order to prove that stack frames are properly destroyed according to
ES2015 tail call optimization semantics.
defines: [$MAX_ITERATIONS]
--- |
481 |
tco-const-body-strict.js |
---
description: Statement within statement is a candidate for tail-call optimization.
esid: sec-static-semantics-hascallintailposition
flags: [onlyStrict]
features: [tail-call-optimization]
includes: [tcoHelper.js]
--- |
651 |
tco-let-body-strict.js |
---
description: Statement within statement is a candidate for tail-call optimization.
esid: sec-static-semantics-hascallintailposition
flags: [onlyStrict]
features: [tail-call-optimization]
includes: [tcoHelper.js]
--- |
649 |
tco-lhs-body-strict.js |
---
description: Statement within statement is a candidate for tail-call optimization.
esid: sec-static-semantics-hascallintailposition
flags: [onlyStrict]
features: [tail-call-optimization]
includes: [tcoHelper.js]
--- |
663 |
tco-var-body-strict.js |
---
description: Statement within statement is a candidate for tail-call optimization.
esid: sec-static-semantics-hascallintailposition
flags: [onlyStrict]
features: [tail-call-optimization]
includes: [tcoHelper.js]
--- |
649 |