// Copyright (C) 2016 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- desc: > Extension not observed when creation of variable binding would produce an early error (for-of statement) template: global info: | B.3.3.2 Changes to GlobalDeclarationInstantiation [...] b. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for script, then [...] ---*/ //- setup assert.throws(ReferenceError, function() { f; }, 'An initialized binding is not created prior to evaluation'); assert.sameValue( typeof f, 'undefined', 'An uninitialized binding is not created prior to evaluation' ); for (let f in { key: 0 }) { //- teardown } assert.throws(ReferenceError, function() { f; }, 'An initialized binding is not created following evaluation'); assert.sameValue( typeof f, 'undefined', 'An uninitialized binding is not created following evaluation' );