michael@0: // Iterating over non-iterable values throws a TypeError. michael@0: michael@0: load(libdir + "asserts.js"); michael@0: michael@0: function argsobj() { return arguments; } michael@0: michael@0: var misc = [ michael@0: {}, {x: 1}, Math, isNaN, michael@0: Object.create(null), michael@0: argsobj(0, 1, 2), michael@0: null, undefined, michael@0: true, 0, 3.1416, michael@0: new Boolean(true), new Number(0), michael@0: {iterator: function () { return undefined; }}, michael@0: {iterator: function () { return null; }}, michael@0: {iterator: function () { return true; }}, michael@0: {iterator: function () { return 17; }}, michael@0: ]; michael@0: michael@0: for (var i = 0; i < misc.length; i++) { michael@0: let v = misc[i]; michael@0: var testfn = function () { michael@0: for (var _ of v) michael@0: throw 'FAIL'; michael@0: throw 'BAD'; michael@0: }; michael@0: assertThrowsInstanceOf(testfn, TypeError); michael@0: }