mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-13 05:15:45 +00:00
Bug 771027 - for-of semantics: convert the result of obj.iterator() to an object. r=bhackett.
This commit is contained in:
parent
739a7738d1
commit
82b55a13fe
23
js/src/jit-test/tests/collections/constructor-errors.js
Normal file
23
js/src/jit-test/tests/collections/constructor-errors.js
Normal file
@ -0,0 +1,23 @@
|
||||
// The Set constructor throws TypeError when passed a non-iterable argument.
|
||||
|
||||
load(libdir + "asserts.js");
|
||||
|
||||
function argsobj() { return arguments; }
|
||||
|
||||
var misc = [
|
||||
{}, {x: 1}, Math, isNaN,
|
||||
Object.create(null),
|
||||
argsobj(0, 1, 2),
|
||||
null,
|
||||
true, 0, 3.1416,
|
||||
new Boolean(true), new Number(0),
|
||||
{iterator: function () { return undefined; }},
|
||||
{iterator: function () { return null; }},
|
||||
{iterator: function () { return true; }},
|
||||
{iterator: function () { return 17; }},
|
||||
];
|
||||
|
||||
for (var v of misc) {
|
||||
assertThrowsInstanceOf(function () { Set(v); }, TypeError);
|
||||
assertThrowsInstanceOf(function () { Map(v); }, TypeError);
|
||||
}
|
@ -10,7 +10,12 @@ var misc = [
|
||||
argsobj(0, 1, 2),
|
||||
null, undefined,
|
||||
true, 0, 3.1416,
|
||||
new Boolean(true), new Number(0)];
|
||||
new Boolean(true), new Number(0),
|
||||
{iterator: function () { return undefined; }},
|
||||
{iterator: function () { return null; }},
|
||||
{iterator: function () { return true; }},
|
||||
{iterator: function () { return 17; }},
|
||||
];
|
||||
|
||||
for (var i = 0; i < misc.length; i++) {
|
||||
let v = misc[i];
|
||||
|
@ -610,6 +610,9 @@ GetIterator(JSContext *cx, HandleObject obj, unsigned flags, Value *vp)
|
||||
|
||||
if (!Invoke(cx, ObjectOrNullValue(obj), method, 0, NULL, vp))
|
||||
return false;
|
||||
|
||||
if (!ToObject(cx, vp))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user