summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/wast-parser.cc7
-rw-r--r--test/parse/module/bad-module-no-close.txt2
-rw-r--r--test/regress/regress-13.txt7
3 files changed, 14 insertions, 2 deletions
diff --git a/src/wast-parser.cc b/src/wast-parser.cc
index 85258b37..3682d743 100644
--- a/src/wast-parser.cc
+++ b/src/wast-parser.cc
@@ -2011,7 +2011,12 @@ Result WastParser::ParseScriptModule(
auto tsm = MakeUnique<TextScriptModule>();
tsm->module.name = name;
tsm->module.loc = loc;
- CHECK_RESULT(ParseModuleFieldList(&tsm->module));
+ if (IsModuleField(PeekPair())) {
+ CHECK_RESULT(ParseModuleFieldList(&tsm->module));
+ } else if (!PeekMatch(TokenType::Rpar)) {
+ ConsumeIfLpar();
+ return ErrorExpected({"a module field"});
+ }
*out_module = std::move(tsm);
break;
}
diff --git a/test/parse/module/bad-module-no-close.txt b/test/parse/module/bad-module-no-close.txt
index beb4b64c..4da00e02 100644
--- a/test/parse/module/bad-module-no-close.txt
+++ b/test/parse/module/bad-module-no-close.txt
@@ -1,5 +1,5 @@
;;; ERROR: 1
(module
(;; STDERR ;;;
-out/test/parse/module/bad-module-no-close.txt:3:2: error: unexpected token EOF, expected ).
+out/test/parse/module/bad-module-no-close.txt:3:2: error: unexpected token "EOF", expected a module field.
;;; STDERR ;;)
diff --git a/test/regress/regress-13.txt b/test/regress/regress-13.txt
new file mode 100644
index 00000000..3bc25374
--- /dev/null
+++ b/test/regress/regress-13.txt
@@ -0,0 +1,7 @@
+;;; ERROR: 1
+(module (test))
+(;; STDERR ;;;
+out/test/regress/regress-13.txt:2:10: error: unexpected token "test", expected a module field.
+(module (test))
+ ^^^^
+;;; STDERR ;;)