0ceee9ad28
Adds support for parsing top level await to V8, as well as many tests. This is the final cl in the series to add support for top level await to v8. Spec is here: https://tc39.es/proposal-top-level-await/#sec-execute-async-module Bug: v8:9344 Change-Id: Ie8f17ad8c7c60d1f6996d134ae154416cc1f31e3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1703878 Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Adam Klein <adamk@chromium.org> Commit-Queue: Joshua Litt <joshualitt@chromium.org> Cr-Commit-Position: refs/heads/master@{#63946}
59 lines
1.2 KiB
JavaScript
59 lines
1.2 KiB
JavaScript
// Copyright 2019 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: --harmony-top-level-await --allow-natives-syntax
|
|
// Flags: --harmony-dynamic-import
|
|
|
|
var ran = false;
|
|
|
|
async function test1() {
|
|
try {
|
|
let x = await import('modules-skip-8.mjs');
|
|
%AbortJS('failure: should be unreachable');
|
|
} catch(e) {
|
|
assertEquals('x is not defined', 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('Error reading'));
|
|
ran = true;
|
|
}
|
|
}
|
|
|
|
test3();
|
|
%PerformMicrotaskCheckpoint();
|
|
assertTrue(ran);
|