mirror of https://github.com/tc39/test262.git
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
|
@ -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);
|
|
@ -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);
|
|
@ -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);
|
|
@ -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 [], []) {}
|
|
@ -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 [], []) {}
|
|
@ -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…
Reference in New Issue