Index: test/mjsunit/harmony/module-recompile.js |
diff --git a/test/mjsunit/harmony/module-parsing.js b/test/mjsunit/harmony/module-recompile.js |
similarity index 53% |
copy from test/mjsunit/harmony/module-parsing.js |
copy to test/mjsunit/harmony/module-recompile.js |
index cdd0a2e00d91671767ace6773e1b3c40fa06ce62..23f5bfc4d4549c678804efe365bea90350d643fd 100644 |
--- a/test/mjsunit/harmony/module-parsing.js |
+++ b/test/mjsunit/harmony/module-recompile.js |
@@ -27,133 +27,61 @@ |
// Flags: --harmony-modules |
-// Test basic module syntax, with and without automatic semicolon insertion. |
+// Test that potential recompilation of the global scope does not screw up. |
-module A {} |
+"use strict"; |
-module A1 = A |
-module A2 = A; |
-module A3 = A2 |
+var N = 1e5; // Number of loop iterations that trigger optimization. |
-module B { |
- export vx |
- export vy, lz, c, f |
- |
- var vx |
- var vx, vy; |
- var vx = 0, vy |
- let lx, ly |
- let lz = 1 |
- const c = 9 |
- function f() {} |
- |
- module C0 {} |
- |
- export module C { |
- let x |
- export module D { export let x } |
- let y |
- } |
- |
- let zz = "" |
- |
- export var x0 |
- export var x1, x2 = 6, x3 |
- export let y0 |
- export let y1 = 0, y2 |
- export const z0 = 0 |
- export const z1 = 2, z2 = 3 |
- export function f0() {} |
- export module M1 {} |
- export module M2 = C.D |
- export module M3 at "http://where" |
- |
- import i0 from I |
- import i1, i2, i3, M from I |
- //import i4, i5 from "http://where" |
+module A { |
+ export var x = 1 |
+ export function f() { return x } |
} |
+var f = A.f |
-module I { |
- export let i0, i1, i2, i3; |
- export module M {} |
-} |
+assertEquals(1, A.x) |
+assertEquals(1, A.f()) |
+assertEquals(1, f()) |
-module C1 = B.C; |
-module D1 = B.C.D |
-module D2 = C1.D |
-module D3 = D2 |
+A.x = 2 |
-module E1 at "http://where" |
-module E2 at "http://where"; |
-module E3 = E1 |
+assertEquals(2, A.x) |
+assertEquals(2, A.f()) |
+assertEquals(2, f()) |
-// Check that ASI does not interfere. |
- |
-module X |
-{ |
-let x |
+for (var i = 0; i < N; i++) { |
+ if (i > N) print("impossible"); |
} |
-module Y |
-= |
-X |
- |
-module Z |
-at |
-"file://local" |
- |
-import |
-vx |
-, |
-vy |
-from |
-B |
- |
- |
-module Wrap { |
-export |
-x |
-, |
-y |
- |
-export |
-var |
-v1 = 1 |
- |
-export |
-let |
-v2 = 2 |
- |
-export |
-const |
-v3 = 3 |
- |
-export |
-function |
-f |
-( |
-) |
-{ |
-} |
+assertEquals(2, A.x) |
+assertEquals(2, A.f()) |
+assertEquals(2, f()) |
-export |
-module V |
-{ |
-} |
-} |
-export A, A1, A2, A3, B, I, C1, D1, D2, D3, E1, E2, E3, X, Y, Z, Wrap, x, y, UU |
+// Same test with loop inside a module. |
+ |
+module B { |
+ module A { |
+ export var x = 1 |
+ export function f() { return x } |
+ } |
+ var f = A.f |
+ assertEquals(1, A.x) |
+ assertEquals(1, A.f()) |
+ assertEquals(1, f()) |
+ A.x = 2 |
-// Check that 'module' still works as an identifier. |
+ assertEquals(2, A.x) |
+ assertEquals(2, A.f()) |
+ assertEquals(2, f()) |
-var module |
-module = {} |
-module["a"] = 6 |
-function module() {} |
-function f(module) { return module } |
-try {} catch (module) {} |
+ for (var i = 0; i < N; i++) { |
+ if (i > N) print("impossible"); |
Michael Starzinger
2012/07/06 10:53:22
I am not sure if this will force recompilation. Un
|
+ } |
-module |
-v = 20 |
+ assertEquals(2, A.x) |
+ assertEquals(2, A.f()) |
+ assertEquals(2, f()) |
+} |