blob: f79d3fa317eb871f9d7f11cd51258a36ba43d8a9 [file] [log] [blame]
// __noSuchMethod__ is totally non-standard and evil, but in this one weird case
// below we don't actually use it. So this test is bog-standard ES6, not
// SpiderMonkey-specific.
//
// In ES6:
// Accessing 1[Symbol.iterator]() throws a TypeError calling |undefined|.
// In SpiderMonkey:
// Accessing 1[Symbol.iterator]() does *not* invoke __noSuchMethod__ looked up
// on 1 (or on an implicitly boxed 1), because 1 is a primitive value.
// SpiderMonkey then does exactly the ES6 thing here and throws a TypeError
// calling |undefined|.
Object.prototype.__noSuchMethod__ = {};
try
{
var [x] = 1;
throw new Error("didn't throw");
}
catch (e)
{
assertEq(e instanceof TypeError, true,
"expected TypeError, got " + e);
}