| // for-of is defined in terms of basic operations on objects, particularly |
| // [[Get]] for properties named "iterator" and "next", and [[Call]]. These |
| // "semantics" tests check that for-of really does appear to be implemented in |
| // terms of those more basic operations, as required by the spec, even in |
| // unusual cases. |
| |
| // Deleting Array.prototype.iterator makes for-of stop working on arrays. |
| |
| load(libdir + "asserts.js"); |
| load(libdir + "iteration.js"); |
| |
| delete Array.prototype[Symbol.iterator]; |
| assertThrowsInstanceOf(function () { for (var x of []) ; }, TypeError); |