// Copyright 2015 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.

// Flags: --no-harmony-restrictive-declarations

(function() {
  var x = {a: 1}
  assertEquals("undefined", typeof f);
  with (x)
    function f() { return a; }
  assertEquals("function", typeof f);
  assertEquals(1, f());
  x.a = 2;
  assertEquals(2, f());
})();

var y = {b: 1}
assertEquals("undefined", typeof g);
with (y)
  function g() { return b; }
assertEquals("function", typeof g);
assertEquals(1, g());
y.b = 2;
assertEquals(2, g());