Upgrade V8 to version 4.9.385.28
https://chromium.googlesource.com/v8/v8/+/4.9.385.28
Change-Id: I4b2e74289d4bf3667f2f3dc8aa2e541f63e26eb4
diff --git a/test/mjsunit/es6/iteration-semantics.js b/test/mjsunit/es6/iteration-semantics.js
index 544c94d..6466ac5 100644
--- a/test/mjsunit/es6/iteration-semantics.js
+++ b/test/mjsunit/es6/iteration-semantics.js
@@ -25,7 +25,7 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-// Flags: --harmony-scoping --harmony-proxies
+// Flags: --harmony-proxies
// Test for-of semantics.
@@ -200,9 +200,11 @@
// Done.
{ value: 4, done: 42 }])));
// Results that are not objects.
-assertEquals([undefined, undefined, undefined],
- fold(append, [],
- results([10, "foo", /qux/, { value: 37, done: true }])));
+assertThrows(function() {
+ assertEquals([undefined, undefined, undefined],
+ fold(append, [],
+ results([10, "foo", /qux/, { value: 37, done: true }])));
+}, TypeError);
// Getters (shudder).
assertEquals([1, 2],
fold(append, [],
@@ -305,32 +307,55 @@
try_control(integers_until(10),
function(x) { return (x == 5) ? x : "continue" }));
+// TODO(neis,cbruni): Enable once the corresponding traps work again.
// Proxy results, with getters.
-function transparent_proxy(x) {
- return Proxy.create({
- get: function(receiver, name) { return x[name]; }
- });
-}
-assertEquals([1, 2],
- fold(append, [],
- results([one_time_getter({ value: 1 }, 'done', false),
- one_time_getter({ done: false }, 'value', 2),
- { value: 37, done: true },
- never_getter(never_getter({}, 'done'), 'value')]
- .map(transparent_proxy))));
+// function transparent_proxy(x) {
+// return new Proxy({}, {
+// get: function(receiver, name) { return x[name]; }
+// });
+// }
+// assertEquals([1, 2],
+// fold(append, [],
+// results([one_time_getter({ value: 1 }, 'done', false),
+// one_time_getter({ done: false }, 'value', 2),
+// { value: 37, done: true },
+// never_getter(never_getter({}, 'done'), 'value')]
+// .map(transparent_proxy))));
// Proxy iterators.
-function poison_proxy_after(iterable, n) {
- var iterator = iterable[Symbol.iterator]();
- return wrap_iterator(Proxy.create({
- get: function(receiver, name) {
- if (name == 'next' && n-- < 0) throw "unreachable";
- return iterator[name];
- },
- // Needed for integers_until(10)'s this.n++.
- set: function(receiver, name, val) {
- return iterator[name] = val;
- }
- }));
+// function poison_proxy_after(iterable, n) {
+// var iterator = iterable[Symbol.iterator]();
+// return wrap_iterator(new Proxy({}, {
+// get: function(receiver, name) {
+// if (name == 'next' && n-- < 0) throw "unreachable";
+// return iterator[name];
+// },
+// // Needed for integers_until(10)'s this.n++.
+// set: function(receiver, name, val) {
+// return iterator[name] = val;
+// }
+// }));
+// }
+// assertEquals(45, fold(sum, 0, poison_proxy_after(integers_until(10), 10)));
+
+
+function test_iterator_result_object_non_object(value, descr) {
+ var arr = [];
+ var ex;
+ var message = 'Iterator result ' + (descr || value) + ' is not an object';
+ try {
+ fold(append, arr,
+ results([{value: 1}, {}, value, {value: 2}, {done: true}]));
+ } catch (e) {
+ ex = e;
+ }
+ assertInstanceof(ex, TypeError);
+ assertEquals(message, ex.message);
+ assertArrayEquals([1, undefined], arr);
}
-assertEquals(45, fold(sum, 0, poison_proxy_after(integers_until(10), 10)));
+test_iterator_result_object_non_object(null);
+test_iterator_result_object_non_object(undefined);
+test_iterator_result_object_non_object(42);
+test_iterator_result_object_non_object('abc');
+test_iterator_result_object_non_object(false);
+test_iterator_result_object_non_object(Symbol('x'), 'Symbol(x)');