Name Description Size
12.6.4-1.js --- es5id: 12.6.4-1 description: > The for-in Statement - a property name must not be visited more than once in any enumeration. --- 957
12.6.4-2.js --- es5id: 12.6.4-2 description: > The for-in Statement - the values of [[Enumerable]] attributes are not considered when determining if a property of a prototype object is shadowed by a previous object on the prototype chain --- 947
browser.js 0
cptn-decl-abrupt-empty.js --- es6id: 13.7.5.11 description: > Completion value when head has a declaration and iteration is cancelled info: | IterationStatement : for ( var ForBinding in Expression ) Statement 1. Let keyResult be ForIn/OfHeadEvaluation( « », Expression, enumerate). 2. ReturnIfAbrupt(keyResult). 3. Return ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult, varBinding, labelSet). 13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation [...] 2. Let V = undefined. [...] 5. Repeat a. Let nextResult be IteratorStep(iterator). b. ReturnIfAbrupt(nextResult). c. If nextResult is false, return NormalCompletion(V). [...] k. Let result be the result of evaluating stmt. [...] m. If LoopContinues(result, labelSet) is false, return IteratorClose(iterator, UpdateEmpty(result, V)). --- 1429
cptn-decl-itr.js --- es6id: 13.7.5.11 description: > Completion value when head has a declaration and iteration occurs info: | IterationStatement : for ( var ForBinding in Expression ) Statement 1. Let keyResult be ForIn/OfHeadEvaluation( « », Expression, enumerate). 2. ReturnIfAbrupt(keyResult). 3. Return ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult, varBinding, labelSet). 13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation [...] 2. Let V = undefined. [...] 5. Repeat a. Let nextResult be IteratorStep(iterator). b. ReturnIfAbrupt(nextResult). c. If nextResult is false, return NormalCompletion(V). [...] k. Let result be the result of evaluating stmt. [...] n. If result.[[value]] is not empty, let V be result.[[value]]. --- 1125
cptn-decl-skip-itr.js --- es6id: 13.7.5.11 description: > Completion value when head has a declaration and iteration is skipped info: | IterationStatement : for ( var ForBinding in Expression ) Statement 1. Let keyResult be ForIn/OfHeadEvaluation( « », Expression, enumerate). 2. ReturnIfAbrupt(keyResult). 13.7.5.12 Runtime Semantics: ForIn/OfHeadEvaluation [...] 7. If iterationKind is enumerate, then a. If exprValue.[[value]] is null or undefined, then i. Return Completion{[[type]]: break, [[value]]: empty, [[target]]: empty}. --- 1019
cptn-decl-zero-itr.js --- es6id: 13.7.5.11 description: > Completion value when head has a declaration and no iteration occurs info: | IterationStatement : for ( var ForBinding in Expression ) Statement 1. Let keyResult be ForIn/OfHeadEvaluation( « », Expression, enumerate). 2. ReturnIfAbrupt(keyResult). 3. Return ForIn/OfBodyEvaluation(ForBinding, Statement, keyResult, varBinding, labelSet). 13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation [...] 2. Let V = undefined. [...] 5. Repeat a. Let nextResult be IteratorStep(iterator). b. ReturnIfAbrupt(nextResult). c. If nextResult is false, return NormalCompletion(V). --- 972
cptn-expr-abrupt-empty.js --- es6id: 13.7.5.11 description: > Completion value when head has no declaration and iteration is cancelled info: | IterationStatement : for ( LeftHandSideExpression in Expression ) Statement 1. Let keyResult be ForIn/OfHeadEvaluation( « », Expression, enumerate). 2. ReturnIfAbrupt(keyResult). 3. Return ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement, keyResult, assignment, labelSet). 13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation [...] 2. Let V = undefined. [...] 5. Repeat a. Let nextResult be IteratorStep(iterator). b. ReturnIfAbrupt(nextResult). c. If nextResult is false, return NormalCompletion(V). [...] k. Let result be the result of evaluating stmt. [...] m. If LoopContinues(result, labelSet) is false, return IteratorClose(iterator, UpdateEmpty(result, V)). --- 1462
cptn-expr-itr.js --- es6id: 13.7.5.11 description: > Completion value when head has no declaration and iteration occurs info: | IterationStatement : for ( LeftHandSideExpression in Expression ) Statement 1. Let keyResult be ForIn/OfHeadEvaluation( « », Expression, enumerate). 2. ReturnIfAbrupt(keyResult). 3. Return ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement, keyResult, assignment, labelSet). 13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation [...] 2. Let V = undefined. [...] 5. Repeat a. Let nextResult be IteratorStep(iterator). b. ReturnIfAbrupt(nextResult). c. If nextResult is false, return NormalCompletion(V). [...] k. Let result be the result of evaluating stmt. [...] n. If result.[[value]] is not empty, let V be result.[[value]]. --- 1152
cptn-expr-skip-itr.js --- es6id: 13.7.5.11 description: > Completion value when head has no declaration and iteration is skipped info: | IterationStatement : for ( LeftHandSideExpression in Expression ) Statement 1. Let keyResult be ForIn/OfHeadEvaluation( « », Expression, enumerate). 2. ReturnIfAbrupt(keyResult). 13.7.5.12 Runtime Semantics: ForIn/OfHeadEvaluation [...] 7. If iterationKind is enumerate, then a. If exprValue.[[value]] is null or undefined, then i. Return Completion{[[type]]: break, [[value]]: empty, [[target]]: empty}. --- 1040
cptn-expr-zero-itr.js --- es6id: 13.7.5.11 description: > Completion value when head has no declaration and no iteration occurs info: | IterationStatement : for ( LeftHandSideExpression in Expression ) Statement 1. Let keyResult be ForIn/OfHeadEvaluation( « », Expression, enumerate). 2. ReturnIfAbrupt(keyResult). 3. Return ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement, keyResult, assignment, labelSet). 13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation [...] 2. Let V = undefined. [...] 5. Repeat a. Let nextResult be IteratorStep(iterator). b. ReturnIfAbrupt(nextResult). c. If nextResult is false, return NormalCompletion(V). --- 999
decl-async-fun.js --- esid: sec-for-in-and-for-of-statements 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] --- 600
decl-async-gen.js --- esid: sec-for-in-and-for-of-statements 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] --- 602
decl-cls.js --- description: Class declaration not allowed in statement position esid: sec-for-in-and-for-of-statements es6id: 13.7.5 negative: phase: parse type: SyntaxError --- 393
decl-const.js --- description: Lexical declaration (const) not allowed in statement position esid: sec-for-in-and-for-of-statements es6id: 13.7.5 negative: phase: parse type: SyntaxError --- 408
decl-fun.js --- description: Function declaration not allowed in statement position esid: sec-for-in-and-for-of-statements es6id: 13.7.5 negative: phase: parse type: SyntaxError --- 401
decl-gen.js --- description: Generator declaration not allowed in statement position esid: sec-for-in-and-for-of-statements es6id: 13.7.5 negative: phase: parse type: SyntaxError features: [generators] --- 426
decl-let.js --- description: Lexical declaration (let) not allowed in statement position esid: sec-for-in-and-for-of-statements es6id: 13.7.5 negative: phase: parse type: SyntaxError --- 397
dstr
head-const-bound-names-dup.js --- description: The head's declaration may not contain duplicate entries negative: phase: parse type: SyntaxError info: | It is a Syntax Error if the BoundNames of ForDeclaration contains any duplicate entries. esid: sec-for-in-and-for-of-statements es6id: 13.7.5 --- 502
head-const-bound-names-fordecl-tdz.js --- es6id: 13.6.4.12_S2 description: > ForIn/Of: Bound names of ForDeclaration are in TDZ (for-of) --- 360
head-const-bound-names-in-stmt.js --- description: The body may not re-declare variables declared in the head negative: phase: parse type: SyntaxError info: | It is a Syntax Error if any element of the BoundNames of ForDeclaration also occurs in the VarDeclaredNames of Statement. esid: sec-for-in-and-for-of-statements es6id: 13.7.5 --- 542
head-const-bound-names-let.js --- description: The declaration may not contain a binding for `let` negative: phase: parse type: SyntaxError info: | It is a Syntax Error if the BoundNames of ForDeclaration contains "let". esid: sec-for-in-and-for-of-statements es6id: 13.7.5 flags: [noStrict] --- 492
head-const-fresh-binding-per-iteration.js --- es6id: 13.6.4.13 description: > const ForDeclaration: creates a fresh binding per iteration --- 383
head-decl-expr.js --- description: Expression is allowed in head info: | IterationStatement : for ( ForDeclaration in Expression ) Statement 1. Let keyResult be the result of performing ForIn/OfHeadEvaluation(BoundNames of ForDeclaration, Expression, enumerate). 2. ReturnIfAbrupt(keyResult). 3. Return ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult, lexicalBinding, labelSet). es6id: 13.7.5.11 --- 735
head-expr-expr.js --- description: Expression is allowed in head info: | IterationStatement : for ( ForDeclaration in Expression ) Statement 1. Let keyResult be the result of performing ForIn/OfHeadEvaluation(BoundNames of ForDeclaration, Expression, enumerate). 2. ReturnIfAbrupt(keyResult). 3. Return ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult, lexicalBinding, labelSet). es6id: 13.7.5.11 --- 738
head-let-bound-names-dup.js --- description: The head's declaration may not contain duplicate entries negative: phase: parse type: SyntaxError info: | It is a Syntax Error if the BoundNames of ForDeclaration contains any duplicate entries. esid: sec-for-in-and-for-of-statements-static-semantics-early-errors es6id: 13.7.5 --- 530
head-let-bound-names-fordecl-tdz.js --- es6id: 13.6.4.12_S2 description: > ForIn/Of: Bound names of ForDeclaration are in TDZ (for-of) --- 358
head-let-bound-names-in-stmt.js --- description: The body may not re-declare variables declared in the head negative: phase: parse type: SyntaxError info: | It is a Syntax Error if any element of the BoundNames of ForDeclaration also occurs in the VarDeclaredNames of Statement. esid: sec-for-in-and-for-of-statements-static-semantics-early-errors es6id: 13.7.5 --- 570
head-let-bound-names-let.js --- description: The declaration may not contain a binding for `let` negative: phase: parse type: SyntaxError info: | It is a Syntax Error if the BoundNames of ForDeclaration contains "let". flags: [noStrict] esid: sec-for-in-and-for-of-statements es6id: 13.7.5 --- 490
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 [ } ] LeftHandSideExpression[?Yield] in Expression[+In, ?Yield] ) Statement[?Yield, ?Return] for ( ForDeclaration[?Yield] in Expression[+In, ?Yield] ) Statement[?Yield, ?Return] --- 805
head-let-fresh-binding-per-iteration.js --- esid: sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset es6id: 13.7.5.13 description: > let ForDeclaration: creates a fresh binding per iteration --- 973
head-lhs-cover-non-asnmt-trgt.js --- description: Head's LeftHandSideExpression must be a simple assignment target info: | It is a Syntax Error if IsValidSimpleAssignmentTarget of LeftHandSideExpression is false. It is a Syntax Error if the LeftHandSideExpression is CoverParenthesizedExpressionAndArrowParameterList : ( Expression ) and Expression derives a production that would produce a Syntax Error according to these rules if that production is substituted for LeftHandSideExpression. This rule is recursively applied. esid: sec-for-in-and-for-of-statements-static-semantics-early-errors es6id: 13.7.5 negative: phase: parse type: SyntaxError --- 869
head-lhs-cover.js --- description: > Head's AssignmentExpression may be CoverParenthesizedExpressionAndArrowParameterList esid: sec-for-in-and-for-of-statements-static-semantics-early-errors es6id: 13.7.5 --- 502
head-lhs-invalid-asnmt-ptrn-ary.js --- description: Invalid destructuring assignment pattern (array literal) info: | It is a Syntax Error if LeftHandSideExpression is either an ObjectLiteral or an ArrayLiteral and if the lexical token sequence matched by LeftHandSideExpression cannot be parsed with no tokens left over using AssignmentPattern as the goal symbol. esid: sec-for-in-and-for-of-statements-static-semantics-early-errors es6id: 13.7.5 negative: phase: parse type: SyntaxError --- 695
head-lhs-invalid-asnmt-ptrn-obj.js --- description: Invalid destructuring assignment pattern (object literal) info: | It is a Syntax Error if LeftHandSideExpression is either an ObjectLiteral or an ArrayLiteral and if the lexical token sequence matched by LeftHandSideExpression cannot be parsed with no tokens left over using AssignmentPattern as the goal symbol. esid: sec-for-in-and-for-of-statements-static-semantics-early-errors es6id: 13.7.5 negative: phase: parse type: SyntaxError --- 698
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 [ } ] LeftHandSideExpression[?Yield] in Expression[+In, ?Yield] ) Statement[?Yield, ?Return] for ( ForDeclaration[?Yield] in Expression[+In, ?Yield] ) Statement[?Yield, ?Return] flags: [noStrict] --- 937
head-lhs-member.js --- description: > Head's AssignmentExpression may be a MemberExpression esid: sec-for-in-and-for-of-statements-static-semantics-early-errors es6id: 13.7.5 --- 478
head-lhs-non-asnmt-trgt.js --- description: Head's LeftHandSideExpression must be a simple assignment target info: | It is a Syntax Error if IsValidSimpleAssignmentTarget of LeftHandSideExpression is false. esid: sec-for-in-and-for-of-statements-static-semantics-early-errors es6id: 13.7.5 negative: phase: parse type: SyntaxError --- 534
head-var-bound-names-dup.js --- description: The head's declaration may contain duplicate entries esid: sec-for-in-and-for-of-statements-static-semantics-early-errors es6id: 13.7.5 --- 459
head-var-bound-names-in-stmt.js --- description: The body may re-declare variables declared in the head esid: sec-for-in-and-for-of-statements-static-semantics-early-errors es6id: 13.7.5 --- 470
head-var-bound-names-let.js --- description: The head's bound names may include "let" esid: sec-for-in-and-for-of-statements-static-semantics-early-errors es6id: 13.7.5 flags: [noStrict] --- 469
head-var-expr.js --- description: Expression is allowed in head info: | IterationStatement : for ( ForDeclaration in Expression ) Statement 1. Let keyResult be the result of performing ForIn/OfHeadEvaluation(BoundNames of ForDeclaration, Expression, enumerate). 2. ReturnIfAbrupt(keyResult). 3. Return ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult, lexicalBinding, labelSet). es6id: 13.7.5.11 --- 735
identifier-let-allowed-as-lefthandside-expression-not-strict.js --- description: > identifier "let" allowed as lefthandside expression esid: sec-iteration-statements info: | for ( [ lookahead ∉ { let [ } ] LeftHandSideExpression [?Yield, ?Await] in Expression[+In, ?Yield, ? Await]) Statement[?Yield, ?Await, ?Return] flags: [noStrict] --- 473
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. --- 630
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. --- 628
labelled-fn-stmt-lhs.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. --- 624
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. --- 628
let-array-with-newline.js --- esid: sec-for-in-and-for-of-statements 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] --- 582
let-block-with-newline.js --- esid: sec-for-in-and-for-of-statements 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] --- 519
let-identifier-with-newline.js --- esid: sec-for-in-and-for-of-statements 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] --- 542
order-after-define-property.js --- esid: sec-enumerate-object-properties description: > Property names are returned in ascending chronological order of creation that is unaffected by [[DefineOwnProperty]]. info: | EnumerateObjectProperties ( O ) EnumerateObjectProperties must obtain the own property keys of the target object by calling its [[OwnPropertyKeys]] internal method. Property attributes of the target object must be obtained by calling its [[GetOwnProperty]] internal method. OrdinaryOwnPropertyKeys ( O ) [...] 3. For each own property key P of O that is a String but is not an array index, in ascending chronological order of property creation, do a. Add P as the last element of keys. [...] 5. Return keys. includes: [compareArray.js] --- 1405
order-enumerable-shadowed.js --- esid: sec-enumerate-object-properties description: Enumerable properties the prototype which are shadowed by non-enumerable properties on the object are not enumerated features: [for-in-order] includes: [compareArray.js] --- 651
order-property-added.js --- esid: sec-enumerate-object-properties description: Properties added to the object during iteration are not enumerated features: [for-in-order] includes: [compareArray.js] --- 529
order-property-on-prototype.js --- esid: sec-enumerate-object-properties description: Properties on the prototype are enumerated after properties on the object features: [for-in-order] includes: [compareArray.js] --- 563
order-simple-object.js --- esid: sec-enumerate-object-properties description: Property enumeration order for simple objects features: [for-in-order] includes: [compareArray.js] --- 572
S12.6.4_A1.js --- info: "\"for(key in undefined)\" Statement is allowed" es5id: 12.6.4_A1 description: Checking if execution of "for(key in undefined)" passes --- 916
S12.6.4_A2.js --- info: "\"for(key in null)\" Expression is allowed" es5id: 12.6.4_A2 description: Checking if execution of "for(key in null)" passes --- 896
S12.6.4_A3.1.js --- info: | The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement" es5id: 12.6.4_A3.1 description: > Using an array as an Expression is appropriate. Here Expression is an array of numbers --- 1248
S12.6.4_A3.js --- info: | The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement" es5id: 12.6.4_A3 description: > Using an array as an Expression is appropriate. Here Expression is an array of numbers. Eval is used --- 1261
S12.6.4_A4.1.js --- info: | The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement" es5id: 12.6.4_A4.1 description: Using Object as an Expression is appropriate. Eval is used --- 1265
S12.6.4_A4.js --- info: | The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement" es5id: 12.6.4_A4 description: Using Object as an Expression is appropriate. Eval is used --- 1264
S12.6.4_A5.1.js --- info: | The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement" es5id: 12.6.4_A5.1 description: > Using hierarchical Object as an Expression is appropriate. The depth is two --- 1292
S12.6.4_A5.js --- info: | The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement" es5id: 12.6.4_A5 description: > Using hierarchical Object as an Expression is appropriate. The depth is two --- 1296
S12.6.4_A6.1.js --- info: | The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement" es5id: 12.6.4_A6.1 description: > Using Object with custom prototype as an Expression is appropriate. The prototype is "{feat:2,hint:"protohint"}" --- 1455
S12.6.4_A6.js --- info: | The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement" es5id: 12.6.4_A6 description: > Using Object with custom prototype as an Expression is appropriate. The prototype is "{feat:2,hint:"protohint"}" --- 1454
S12.6.4_A7_T1.js --- info: | Properties of the object being enumerated may be deleted during enumeration es5id: 12.6.4_A7_T1 description: > Checking "for (LeftHandSideExpression in Expression) Statement" case --- 1391
S12.6.4_A7_T2.js --- info: | Properties of the object being enumerated may be deleted during enumeration es5id: 12.6.4_A7_T2 description: > Checking "for (var VariableDeclarationNoIn in Expression) Statement" case --- 899
S12.6.4_A14_T2.js --- info: FunctionExpession within a "for-in" Expression is allowed es5id: 12.6.4_A14_T2 description: "Using \"function __func(){return {a:1};}()\" as Expession" --- 862
S12.6.4_A15.js --- info: Block within a "for-in" Expression is not allowed es5id: 12.6.4_A15 description: Using block within "for-in" Expression negative: phase: parse type: SyntaxError --- 591
scope-body-lex-boundary.js --- esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation description: > Creation of new lexical environment for each evaluation of the statement body info: | IterationStatement : for ( ForDeclaration of AssignmentExpression ) Statement [...] 2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult, lexicalBinding, labelSet). 13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation [...] 5. Repeat [...] i. Let result be the result of evaluating stmt. j. Set the running execution context's LexicalEnvironment to oldEnv. k. If LoopContinues(result, labelSet) is false, return ? IteratorClose(iterator, UpdateEmpty(result, V)). l. If result.[[Value]] is not empty, let V be result.[[Value]]. features: [let] --- 1576
scope-body-lex-close.js --- esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation description: > Removal of lexical environment for the initial evaluation of the statement body info: | IterationStatement : for ( ForDeclaration of AssignmentExpression ) Statement [...] 2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult, lexicalBinding, labelSet). 13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation [...] 5. Repeat [...] i. Let result be the result of evaluating stmt. j. Set the running execution context's LexicalEnvironment to oldEnv. k. If LoopContinues(result, labelSet) is false, return ? IteratorClose(iterator, UpdateEmpty(result, V)). l. If result.[[Value]] is not empty, let V be result.[[Value]]. features: [let] --- 1341
scope-body-lex-open.js --- esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation description: > Creation of new lexical environment for the initial evaluation of the statement body info: | IterationStatement : for ( ForDeclaration of AssignmentExpression ) Statement [...] 2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult, lexicalBinding, labelSet). 13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation [...] 5. Repeat [...] d. If lhsKind is either assignment or varBinding, then [...] e. Else, i. Assert: lhsKind is lexicalBinding. ii. Assert: lhs is a ForDeclaration. iii. Let iterationEnv be NewDeclarativeEnvironment(oldEnv). iv. Perform BindingInstantiation for lhs passing iterationEnv as the argument. v. Set the running execution context's LexicalEnvironment to iterationEnv. [...] features: [let] --- 1640
scope-body-var-none.js --- esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation description: No variable environment is created for the statement body info: | IterationStatement : for ( ForDeclaration of AssignmentExpression ) Statement [...] 2. Return ? ForIn/OfBodyEvaluation(ForDeclaration, Statement, keyResult, lexicalBinding, labelSet). 13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation [...] 5. Repeat [...] d. If lhsKind is either assignment or varBinding, then [...] e. Else, i. Assert: lhsKind is lexicalBinding. ii. Assert: lhs is a ForDeclaration. iii. Let iterationEnv be NewDeclarativeEnvironment(oldEnv). iv. Perform BindingInstantiation for lhs passing iterationEnv as the argument. v. Set the running execution context's LexicalEnvironment to iterationEnv. [...] features: [let] --- 1719
scope-head-lex-close.js --- esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation description: > Removal of lexical environment to serve as a temporal dead zone for the statement's AssignmentExpresson info: | IterationStatement : for ( ForDeclaration of AssignmentExpression ) Statement 1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(BoundNames of ForDeclaration, AssignmentExpression, iterate). [...] 13.7.5.12 Runtime Semantics: ForIn/OfHeadEvaluation [...] 2. If TDZnames is not an empty List, then a. Assert: TDZnames has no duplicate entries. b. Let TDZ be NewDeclarativeEnvironment(oldEnv). c. Let TDZEnvRec be TDZ's EnvironmentRecord. d. For each string name in TDZnames, do i. Perform ! TDZEnvRec.CreateMutableBinding(name, false). e. Set the running execution context's LexicalEnvironment to TDZ. 3. Let exprRef be the result of evaluating expr. 4. Set the running execution context's LexicalEnvironment to oldEnv. [...] features: [let] --- 1639
scope-head-lex-open.js --- esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation description: > Creation of new lexical environment to serve as a temporal dead zone for the statement's AssignmentExpresson info: | IterationStatement : for ( ForDeclaration of AssignmentExpression ) Statement 1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(BoundNames of ForDeclaration, AssignmentExpression, iterate). [...] 13.7.5.12 Runtime Semantics: ForIn/OfHeadEvaluation [...] 2. If TDZnames is not an empty List, then a. Assert: TDZnames has no duplicate entries. b. Let TDZ be NewDeclarativeEnvironment(oldEnv). c. Let TDZEnvRec be TDZ's EnvironmentRecord. d. For each string name in TDZnames, do i. Perform ! TDZEnvRec.CreateMutableBinding(name, false). e. Set the running execution context's LexicalEnvironment to TDZ. 3. Let exprRef be the result of evaluating expr. [...] features: [let] --- 1400
scope-head-var-none.js --- esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation description: > No variable environment is created for the statement "head" info: | IterationStatement : for ( ForDeclaration of AssignmentExpression ) Statement 1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(BoundNames of ForDeclaration, AssignmentExpression, iterate). [...] 13.7.5.12 Runtime Semantics: ForIn/OfHeadEvaluation [...] 2. If TDZnames is not an empty List, then a. Assert: TDZnames has no duplicate entries. b. Let TDZ be NewDeclarativeEnvironment(oldEnv). c. Let TDZEnvRec be TDZ's EnvironmentRecord. d. For each string name in TDZnames, do i. Perform ! TDZEnvRec.CreateMutableBinding(name, false). e. Set the running execution context's LexicalEnvironment to TDZ. 3. Let exprRef be the result of evaluating expr. [...] flags: [noStrict] --- 1729
shell.js 0
var-arguments-fn-strict-init-strict.js --- esid: sec-for-statement description: > 'for(var arguments = 42 in ...) {...}' throws SyntaxError in strict mode within a function declaration flags: [onlyStrict] negative: phase: parse type: SyntaxError --- 477
var-arguments-fn-strict-strict.js --- esid: sec-for-statement description: > 'for(var arguments in ...) {...}' throws SyntaxError in strict mode within a function declaration flags: [onlyStrict] negative: phase: parse type: SyntaxError --- 464
var-arguments-strict-init-strict.js --- esid: sec-for-statement description: > 'for(var arguments = 42 in ...) {...}' throws SyntaxError in strict mode flags: [onlyStrict] negative: phase: parse type: SyntaxError --- 434
var-arguments-strict-strict.js --- esid: sec-for-statement description: "'for(var arguments in ...) {...}' throws SyntaxError in strict mode" flags: [onlyStrict] negative: phase: parse type: SyntaxError --- 416
var-eval-strict-init-strict.js --- esid: sec-for-statement description: "'for(var eval = 42 in ...) {...}' throws SyntaxError in strict mode" flags: [onlyStrict] negative: phase: parse type: SyntaxError --- 416
var-eval-strict-strict.js --- esid: sec-for-statement description: "'for(var eval in ...) {...}' throws SyntaxError in strict mode" flags: [onlyStrict] negative: phase: parse type: SyntaxError --- 406