// Copyright 2016 the V8 project authors. All rights reserved. | |
// Use of this source code is governed by a BSD-style license that can be | |
// found in the LICENSE file. | |
var iter = {} | |
iter[Symbol.iterator] = () => ({ | |
next: () => ({}), | |
return: () => {throw 666} | |
}); | |
function* foo() { | |
for (let x of iter) {throw 42} | |
} | |
assertThrowsEquals(() => foo().next(), 42); | |
function* bar() { | |
let x; | |
{ let gaga = () => {x}; | |
[[x]] = iter; | |
} | |
} | |
assertThrows(() => bar().next(), TypeError); | |
function baz() { | |
let x; | |
{ let gaga = () => {x}; | |
let gugu = () => {gaga}; | |
[[x]] = iter; | |
} | |
} | |
assertThrows(baz, TypeError); |