Correct test for for-in IterationStatement

This test was intended to assert the semantics of the `for-in`
statement, but it was mistakenly authored to use a `for-of` statement.
Update the statement under test, and improve the testing methodology to
correctly assert the creation of distinct bindings.
This commit is contained in:
Mike Pennisi 2016-06-30 13:36:47 -04:00
parent 53df13bf9d
commit 7a8e644696

View File

@ -1,15 +1,28 @@
// Copyright (C) 2011 the V8 project authors. All rights reserved. // Copyright (C) 2011 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file. // This code is governed by the BSD license found in the LICENSE file.
/*--- /*---
es6id: 13.6.4.13 esid: sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset
es6id: 13.7.5.13
description: > description: >
let ForDeclaration: creates a fresh binding per iteration let ForDeclaration: creates a fresh binding per iteration
---*/ ---*/
let s = ''; var fns = {};
for (let x of [1, 2, 3]) { var obj = Object.create(null);
s += x; obj.a = 1;
obj.b = 1;
obj.c = 1;
for (let x in obj) {
// Store function objects as properties of an object so that their return
// value may be verified regardless of the for-in statement's enumeration
// order.
fns[x] = function() { return x; };
} }
assert.sameValue(s, '123', "The value of `s` is `'123'`");
assert.sameValue(typeof fns.a, 'function', 'property definition: "a"');
assert.sameValue(fns.a(), 'a');
assert.sameValue(typeof fns.b, 'function', 'property definition: "b"');
assert.sameValue(fns.b(), 'b');
assert.sameValue(typeof fns.c, 'function', 'property definition: "c"');
assert.sameValue(fns.c(), 'c');