Merge pull request #473 from bocoup/for-inof-exprs

Add tests for iterator expression in ForIn/Of head
This commit is contained in:
Gorkem Yakin 2016-01-19 18:42:11 -08:00
commit e56687f5e9
6 changed files with 116 additions and 0 deletions

View 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);

View 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);

View 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);

View 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 [], []) {}

View 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 [], []) {}

View 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 [], []) {}