1// Copyright JS Foundation and other contributors, http://js.foundation 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15function f() { return 4 } 16 17exit: { 18 assert(f() === 6); 19 break exit; 20 function f() { return 6; } 21} 22assert(f() === 4); 23 24{ 25 assert(f() === 6); 26 f = 1; 27 assert(f === 1); 28 function f() { return 6; } 29 f = 2; 30 assert(f === 2); 31} 32assert(f === 1); 33 34function g() { return 3 } 35exit: { 36 assert(g() === 5); 37 function g() { return 4; } 38 break exit; 39 function g() { return 5; } 40} 41assert(g() === 5); 42 43function h() { 44 try { 45 x; 46 assert(false); 47 } catch (e) { 48 assert(e instanceof ReferenceError); 49 } 50 51 eval("exit: { assert(x() === 8); x = 4; break exit; function x() { return 8; } }"); 52 assert(x === undefined); 53} 54h(); 55