diff options
-rw-r--r-- | src/wast-parser.cc | 7 | ||||
-rw-r--r-- | test/parse/module/bad-module-no-close.txt | 2 | ||||
-rw-r--r-- | test/regress/regress-13.txt | 7 |
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 ;;) |