// Deleting the .next method of an iterator in the middle of a for-of loop // causes a TypeError at the next iteration. load(libdir + "asserts.js"); load(libdir + "iteration.js"); var iterProto = Object.getPrototypeOf([][Symbol.iterator]()); var s = ''; assertThrowsInstanceOf(function () { for (var v of ['duck', 'duck', 'duck', 'goose', 'FAIL']) { s += v; if (v === 'goose') delete iterProto.next; s += '.'; } }, TypeError); assertEq(s, 'duck.duck.duck.goose.');