|
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
|
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 var BUGNUMBER = 273931; |
|
8 var summary = 'Pop scope chain in exception handling'; |
|
9 var actual = ''; |
|
10 var expect = 'ReferenceError'; |
|
11 |
|
12 printBugNumber(BUGNUMBER); |
|
13 printStatus (summary); |
|
14 |
|
15 status = summary + ' ' + inSection(1) + ' '; |
|
16 try |
|
17 { |
|
18 with ({foo:"bar"}) |
|
19 throw 42; |
|
20 } |
|
21 catch (e) |
|
22 { |
|
23 try |
|
24 { |
|
25 printStatus(foo); |
|
26 } |
|
27 catch(ee) |
|
28 { |
|
29 actual = ee.name; |
|
30 } |
|
31 } |
|
32 |
|
33 reportCompare(expect, actual, status); |
|
34 |
|
35 status = summary + ' ' + inSection(2) + ' '; |
|
36 try |
|
37 { |
|
38 with ({foo:"bar"}) |
|
39 eval("throw 42"); |
|
40 } |
|
41 catch (e) |
|
42 { |
|
43 try |
|
44 { |
|
45 printStatus(foo); |
|
46 } |
|
47 catch(ee) |
|
48 { |
|
49 actual = ee.name; |
|
50 } |
|
51 } |
|
52 |
|
53 reportCompare(expect, actual, status); |
|
54 |
|
55 status = summary + ' ' + inSection(3) + ' '; |
|
56 try |
|
57 { |
|
58 var s = "throw 42"; |
|
59 with ({foo:"bar"}) |
|
60 eval(s); |
|
61 } |
|
62 catch (e) |
|
63 { |
|
64 try |
|
65 { |
|
66 printStatus(foo); |
|
67 } |
|
68 catch(ee) |
|
69 { |
|
70 actual = ee.name; |
|
71 } |
|
72 } |
|
73 |
|
74 reportCompare(expect, actual, status); |