|  | // Copyright 2014 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. | 
|  |  | 
|  | (function f(){ | 
|  | assertEquals("function", typeof f); | 
|  | })(); | 
|  |  | 
|  | (function f(){ | 
|  | var f;  // Variable shadows function name. | 
|  | assertEquals("undefined", typeof f); | 
|  | })(); | 
|  |  | 
|  | (function f(){ | 
|  | var f; | 
|  | assertEquals("undefined", typeof f); | 
|  | with ({});  // Force context allocation of both variable and function name. | 
|  | })(); | 
|  |  | 
|  | assertEquals("undefined", typeof f); | 
|  |  | 
|  | // var initialization is intercepted by with scope. | 
|  | (function() { | 
|  | var o = { a: 1 }; | 
|  | with (o) { | 
|  | var a = 2; | 
|  | } | 
|  | assertEquals("undefined", typeof a); | 
|  | assertEquals(2, o.a); | 
|  | })(); |