cc787e174e
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}
39 lines
899 B
JavaScript
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));
|
|
})();
|