|  | // 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. | 
|  |  | 
|  | // Test that hoisting a function out of a lexical scope does not | 
|  | // lead to a parsing error | 
|  |  | 
|  | // This used to cause a crash in the parser | 
|  | function f(one) { class x { } { class x { } function g() { one; x; } g() } } f() | 
|  |  | 
|  | // This used to lead to a ReferenceError | 
|  | function g() { var x = 1; { let x = 2; function g() { x; } g(); } } | 
|  | assertEquals(undefined, g()); | 
|  |  | 
|  | // This used to cause a crash in the parser | 
|  | function __f_4(one) { | 
|  | var __v_10 = one + 1; | 
|  | { | 
|  | let __v_10 = one + 3; | 
|  | function __f_6() { | 
|  | one; | 
|  | __v_10; | 
|  | } | 
|  | __f_6(); | 
|  | } | 
|  | } | 
|  | __f_4(); |