| // Copyright 2017 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Flags: --allow-natives-syntax --harmony-dynamic-import |
| |
| globalThis.ran = false; |
| globalThis.x = undefined; |
| |
| let body = "import('modules-skip-1.mjs').then(ns => { x = ns.life();" + |
| " ran = true;} ).catch(err => %AbortJS(err))" |
| let func = new Function(body); |
| func(); |
| |
| %PerformMicrotaskCheckpoint(); |
| assertEquals(42, globalThis.x); |
| assertTrue(globalThis.ran); |
| |
| globalThis.ran = false; |
| body = "import('modules-skip-1.mjs').then(ns => { x = ns.life();" + |
| " ran = true;} ).catch(err => %AbortJS(err))" |
| eval("var func = new Function(body); func();"); |
| |
| %PerformMicrotaskCheckpoint(); |
| assertEquals(42, globalThis.x); |
| assertTrue(globalThis.ran); |
| |
| globalThis.ran = false; |
| body = "eval(import('modules-skip-1.mjs').then(ns => { x = ns.life();" + |
| " ran = true;} ).catch(err => %AbortJS(err)))" |
| func = new Function(body); |
| func(); |
| |
| %PerformMicrotaskCheckpoint(); |
| assertEquals(42, globalThis.x); |
| assertTrue(globalThis.ran); |