NASHORN-58.js revision 877:cf4d2252d444
1/* 2 * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24/** 25 * NASHORN-58 26 * 27 * @test 28 * @run 29 */ 30 31function test1() { 32 var x = 1; 33 try { 34 print('try'); 35 x = 2; 36 } catch(e) { 37 print('catch'); 38 } finally { 39 print('finally'); 40 x = 3; 41 } 42 print(x); 43} 44 45function test2() { 46 var x = 1; 47 try { 48 print('try'); 49 } finally { 50 print('finally'); 51 x = 2; 52 } 53 print(x); 54} 55 56function test3() { 57 try { 58 return 2; 59 } finally { 60 return 3; 61 } 62} 63 64function test4() { 65 try { 66 x = 1; 67 print(x); 68 try { 69 x = 2; 70 print(x); 71 } finally { 72 x = 3; 73 print(x) 74 try { 75 x = 4; 76 print(x); 77 } finally { 78 x = 5; 79 print(x); 80 } 81 } 82 print(x) 83 } finally { 84 x = 6; 85 print(x); 86 } 87 print(x); 88} 89 90function test5() { 91 try { 92 x = 1; 93 print(x); 94 try { 95 x = 2; 96 print(x); 97 } finally { 98 x = 3; 99 print(x) 100 try { 101 x = 4; 102 print(x); 103 } finally { 104 x = 5; 105 return x; 106 } 107 } 108 print(x) 109 } finally { 110 x = 6; 111 return x; 112 } 113} 114 115function test6() { 116 try { 117 throw new Error("testing"); 118 } catch (ex) { 119 print(ex); 120 return; 121 } finally { 122 print("finally"); 123 } 124} 125 126function test7() { 127 var e = new Error("no message"); 128 var i = 3; 129 try { 130 throw e; 131 } catch (ex) { 132 } finally { 133 i++; 134 } 135 if (i != 4) { 136 print("FAIL"); 137 } 138 print("SUCCESS"); 139} 140 141 142test1(); 143test2(); 144print(test3()); 145test4(); 146print(test5()) 147test6(); 148test7(); 149 150