|
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
|
2 /* |
|
3 * Any copyright is dedicated to the Public Domain. |
|
4 * http://creativecommons.org/licenses/publicdomain/ |
|
5 */ |
|
6 |
|
7 var c = 0; |
|
8 |
|
9 function f(a) { |
|
10 const b = a; |
|
11 try { |
|
12 eval('"use strict"; b = 1 + a; c = 1'); |
|
13 assertEq(0, 1); |
|
14 } catch (e) { |
|
15 assertEq(e.name, 'TypeError'); |
|
16 assertEq(0, c); |
|
17 assertEq(a, b); |
|
18 } |
|
19 } |
|
20 |
|
21 var w = 42; |
|
22 f(w); |
|
23 |
|
24 c = 2; |
|
25 try { |
|
26 eval('"use strict"; function g(x) { const y = x; y = 1 + x; } c = 3'); |
|
27 assertEq(0, 1); |
|
28 } catch (e) { |
|
29 assertEq(e.name, 'TypeError'); |
|
30 assertEq(2, c); |
|
31 } |
|
32 |
|
33 c = 4; |
|
34 try { |
|
35 eval('"use strict"; const z = w; z = 1 + w; c = 5'); |
|
36 assertEq(0, 1); |
|
37 } catch (e) { |
|
38 assertEq(e.name, 'TypeError'); |
|
39 assertEq(4, c); |
|
40 assertEq('z' in this, false); |
|
41 } |
|
42 |
|
43 reportCompare(0, 0, "ok"); |