text: // 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: func
  info: |
      B.3.3.1 Changes to FunctionDeclarationInstantiation
  
      [...]
      ii. If replacing the FunctionDeclaration f with a VariableStatement that
          has F as a BindingIdentifier would not produce any Early Errors for
          func and F is not an element of BoundNames of argumentsList, 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 in { key: 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'
  );
  