// Iterating over the argument to WeakMap can throw. The exception is
// propagated.

load(libdir + "asserts.js");

function data() {
    yield [{}, "XR22/Z"];
    yield [{}, "23D-BN"];
    throw "oops";
}

var it = data();
assertThrowsValue(() => new WeakMap(it), "oops");

function* data2() {
    yield [{}, "XR22/Z"];
    yield [{}, "23D-BN"];
    throw "oops";
}

var it2 = data2();
assertThrowsValue(() => new WeakMap(it2), "oops");