v8/test/mjsunit/regress/regress-crbug-934138.js
Michael Starzinger cc787e174e [asm.js] Fix handling of bogus code after export statement.
This makes the asm.js validator reject source with trailing expressions
after the module exporting return statement. Most of the time trailing
statements would not affect semantics, since they are unreachable. In
some cases we might hide an expected ReferenceError tough.

R=leszeks@chromium.org
TEST=mjsunit/regress/regress-crbug-934138
BUG=chromium:934138

Change-Id: I790366204f5e9c943715a065b5229f2442e2c86e
Reviewed-on: https://chromium-review.googlesource.com/c/1481216
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59766}
2019-02-21 14:37:37 +00:00

39 lines
899 B
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: --allow-natives-syntax
(function TestTrailingJunkAfterExport() {
function Module() {
"use asm";
function f() {}
return {f: f}
%kaboom;
}
assertThrows(() => Module(), ReferenceError);
assertFalse(%IsAsmWasmCode(Module));
})();
(function TestExportWithSemicolon() {
function Module() {
"use asm";
function f() {}
return {f: f};
// appreciate the semicolon
}
assertDoesNotThrow(() => Module());
assertTrue(%IsAsmWasmCode(Module));
})();
(function TestExportWithoutSemicolon() {
function Module() {
"use asm";
function f() {}
return {f: f}
// appreciate the nothingness
}
assertDoesNotThrow(() => Module());
assertTrue(%IsAsmWasmCode(Module));
})();