js/src/tests/js1_5/extensions/catchguard-001.js

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:f514682e20e6
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 * This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5
6
7 test();
8
9 function test()
10 {
11 enterFunc ("test");
12
13 var EXCEPTION_DATA = "String exception";
14 var e = "foo";
15 var caught = false;
16
17 printStatus ("Basic catchguard test.");
18
19 try
20 {
21 throw EXCEPTION_DATA;
22 }
23 catch (e if true)
24 {
25 caught = true;
26 e = "this change should not propagate outside of this scope";
27 }
28 catch (e if false)
29 {
30 reportCompare('PASS', 'FAIL', "Catch block (e if false) should not have executed.");
31 }
32 catch (e)
33 {
34 reportCompare('PASS', 'FAIL', "Catch block (e) should not have executed.");
35 }
36
37 if (!caught)
38 reportCompare('PASS', 'FAIL', "Exception was never caught.");
39
40 if (e != "foo")
41 reportCompare('PASS', 'FAIL', "Exception data modified inside catch() scope should " +
42 "not be visible in the function scope (e = '" +
43 e + "'.)");
44
45 reportCompare('PASS', 'PASS', '');
46 exitFunc ("test");
47 }

mercurial