/* -*- indent-tabs-mode: nil; js-indent-level: 4 -*- */
/*
 * Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/licenses/publicdomain/
 */

var v="global";
function f(a) {
  // This eval could extend f's call object. However, the call object has
  // not yet been marked as a delegate at this point, so no scope chain
  // purge takes place when it is extended.
  eval(a);
  {
    let b=3;
    // This eval causes the cloned block object to be added to the
    // scope chain. The block needs a unique shape: its parent call
    // could acquire bindings for anything without affecting the global
    // object's shape, so it's up to the block's shape to mismatch all
    // property cache entries for prior blocks.
    eval("");
    return v;
  };
}

// Call the function once, to cache a reference to the global v from within
// f's lexical block.
assertEq("global", f(""));

// Call the function again, adding a binding to the call, and ensure that
// we do not see any property cache entry created by the previous reference
// that would direct us to the global definition.
assertEq("local", f("var v='local'"));

// Similarly,but with a doubly-nested block; make sure everyone gets marked.
function f2(a) {
  eval(a);
  {
    let b=3;
    {
      let c=4;
      eval("");
      return v;
    };
  };
}

assertEq("global", f2(""));
assertEq("local",  f2("var v='local'"));

reportCompare(true, true);
