| // 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 |
| // |
| // Note: This test fails with top level await due to test1, which tries to |
| // import a module using top level await and expects it to fail. |
| |
| var ran = false; |
| |
| async function test1() { |
| try { |
| let x = await import('modules-skip-8.mjs'); |
| %AbortJS('failure: should be unreachable'); |
| } catch(e) { |
| assertEquals('Unexpected reserved word', e.message); |
| ran = true; |
| } |
| } |
| |
| test1(); |
| %PerformMicrotaskCheckpoint(); |
| assertTrue(ran); |
| |
| ran = false; |
| |
| async function test2() { |
| try { |
| let x = await import('modules-skip-9.mjs'); |
| %AbortJS('failure: should be unreachable'); |
| } catch(e) { |
| assertInstanceof(e, SyntaxError); |
| assertEquals( |
| "The requested module 'modules-skip-empty.mjs' does not provide an " + |
| "export named 'default'", |
| e.message); |
| ran = true; |
| } |
| } |
| |
| test2(); |
| %PerformMicrotaskCheckpoint(); |
| assertTrue(ran); |
| |
| ran = false; |
| |
| async function test3() { |
| try { |
| let x = await import('nonexistent-file.mjs'); |
| %AbortJS('failure: should be unreachable'); |
| } catch(e) { |
| assertTrue(e.startsWith('d8: Error reading')); |
| ran = true; |
| } |
| } |
| |
| test3(); |
| %PerformMicrotaskCheckpoint(); |
| assertTrue(ran); |