// 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: eval-func info: | B.3.3.3 Changes to EvalDeclarationInstantiation [...] ii. If replacing the FunctionDeclaration f with a VariableStatement that has F as a BindingIdentifier would not produce any Early Errors for body, then [...] ---*/ //- before 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 of [0]) { //- after } 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' );