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 |
resizable-buffer.js |
---
esid: sec-arraybuffer-length
description: >
Indices of TypedArrays backed by resizable buffers are enumerable with
for-in
includes: [resizableArrayBufferUtils.js]
features: [resizable-arraybuffer]
--- |
774 |
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 |
---
description: |
Collection of helper constants and functions for testing resizable array buffers.
defines:
- floatCtors
- ctors
- MyBigInt64Array
- CreateResizableArrayBuffer
- MayNeedBigInt
- Convert
- ToNumbers
- CreateRabForTest
- CollectValuesAndResize
- TestIterationAndResize
features: [BigInt]
--- |
3893 |
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 |