mirror of
https://github.com/tc39/test262.git
synced 2025-04-08 19:35:28 +02:00
Add tests for iterator expression in ForIn/Of head
Although the `for..in` statement allows Expressions to define the iterator, only an AssignmentExpression may occupy this position in the `for..of` statement.
This commit is contained in:
parent
4a862fba95
commit
19762b927a
25
test/language/statements/for-in/head-decl-expr.js
Normal file
25
test/language/statements/for-in/head-decl-expr.js
Normal file
@ -0,0 +1,25 @@
|
||||
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
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
|
||||
---*/
|
||||
|
||||
var iterCount = 0;
|
||||
|
||||
for (let x in null, { key: 0 }) {
|
||||
assert.sameValue(x, 'key');
|
||||
iterCount += 1;
|
||||
}
|
||||
|
||||
assert.sameValue(iterCount, 1);
|
26
test/language/statements/for-in/head-expr-expr.js
Normal file
26
test/language/statements/for-in/head-expr-expr.js
Normal file
@ -0,0 +1,26 @@
|
||||
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
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
|
||||
---*/
|
||||
|
||||
var iterCount = 0;
|
||||
var x;
|
||||
|
||||
for (x in null, { key: 0 }) {
|
||||
assert.sameValue(x, 'key');
|
||||
iterCount += 1;
|
||||
}
|
||||
|
||||
assert.sameValue(iterCount, 1);
|
25
test/language/statements/for-in/head-var-expr.js
Normal file
25
test/language/statements/for-in/head-var-expr.js
Normal file
@ -0,0 +1,25 @@
|
||||
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
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
|
||||
---*/
|
||||
|
||||
var iterCount = 0;
|
||||
|
||||
for (var x in null, { key: 0 }) {
|
||||
assert.sameValue(x, 'key');
|
||||
iterCount += 1;
|
||||
}
|
||||
|
||||
assert.sameValue(iterCount, 1);
|
13
test/language/statements/for-of/head-decl-no-expr.js
Normal file
13
test/language/statements/for-of/head-decl-no-expr.js
Normal file
@ -0,0 +1,13 @@
|
||||
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: Expression not allowed in head's AssignmentExpression position
|
||||
info: >
|
||||
IterationStatement :
|
||||
for ( ForDeclaration of AssignmentExpression ) Statement
|
||||
es6id: 13.7
|
||||
negative: SyntaxError
|
||||
---*/
|
||||
|
||||
for (let x of [], []) {}
|
14
test/language/statements/for-of/head-expr-no-expr.js
Normal file
14
test/language/statements/for-of/head-expr-no-expr.js
Normal file
@ -0,0 +1,14 @@
|
||||
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: Expression not allowed in head's AssignmentExpression position
|
||||
info: >
|
||||
IterationStatement :
|
||||
for ( LeftHandSideExpression of AssignmentExpression ) Statement
|
||||
es6id: 13.7
|
||||
negative: SyntaxError
|
||||
---*/
|
||||
|
||||
var x;
|
||||
for (x of [], []) {}
|
13
test/language/statements/for-of/head-var-no-expr.js
Normal file
13
test/language/statements/for-of/head-var-no-expr.js
Normal file
@ -0,0 +1,13 @@
|
||||
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: Expression not allowed in head's AssignmentExpression position
|
||||
info: >
|
||||
IterationStatement :
|
||||
for ( var ForBinding of AssignmentExpression ) Statement
|
||||
es6id: 13.7
|
||||
negative: SyntaxError
|
||||
---*/
|
||||
|
||||
for (var x of [], []) {}
|
Loading…
x
Reference in New Issue
Block a user