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