| // __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); |
| } |