diff options
Diffstat (limited to 'src/parser')
-rw-r--r-- | src/parser/context-defs.cpp | 10 | ||||
-rw-r--r-- | src/parser/contexts.h | 5 | ||||
-rw-r--r-- | src/parser/wat-parser.cpp | 8 |
3 files changed, 11 insertions, 12 deletions
diff --git a/src/parser/context-defs.cpp b/src/parser/context-defs.cpp index e5c598b6b..2d4d305ed 100644 --- a/src/parser/context-defs.cpp +++ b/src/parser/context-defs.cpp @@ -50,16 +50,6 @@ ParseDefsCtx::makeTypeUse(Index pos, return it->second; } -Result<> ParseDefsCtx::addFunc(Name, - const std::vector<Name>&, - ImportNames*, - TypeUseT, - std::optional<LocalsT>, - Index pos) { - CHECK_ERR(withLoc(pos, irBuilder.visitEnd())); - return Ok{}; -} - Result<> ParseDefsCtx::addGlobal(Name, const std::vector<Name>&, ImportNames*, diff --git a/src/parser/contexts.h b/src/parser/contexts.h index c14a555c5..5dd48bc59 100644 --- a/src/parser/contexts.h +++ b/src/parser/contexts.h @@ -1324,12 +1324,15 @@ struct ParseDefsCtx : TypeParserCtx<ParseDefsCtx> { std::optional<HeapTypeT> type, ParamsT* params, ResultsT* results); + Result<> addFunc(Name, const std::vector<Name>&, ImportNames*, TypeUseT, std::optional<LocalsT>, - Index pos); + Index) { + return Ok{}; + } Result<> addTable(Name, const std::vector<Name>&, ImportNames*, TableTypeT, Index) { diff --git a/src/parser/wat-parser.cpp b/src/parser/wat-parser.cpp index f247dbf48..50a47d7b6 100644 --- a/src/parser/wat-parser.cpp +++ b/src/parser/wat-parser.cpp @@ -177,7 +177,10 @@ Result<> parseModule(Module& wasm, std::string_view input) { for (Index i = 0; i < decls.funcDefs.size(); ++i) { ctx.index = i; - CHECK_ERR(ctx.visitFunctionStart(wasm.functions[i].get())); + auto* f = wasm.functions[i].get(); + if (!f->imported()) { + CHECK_ERR(ctx.visitFunctionStart(f)); + } WithPosition with(ctx, decls.funcDefs[i].pos); if (auto parsed = func(ctx)) { CHECK_ERR(parsed); @@ -186,6 +189,9 @@ Result<> parseModule(Module& wasm, std::string_view input) { assert(im); CHECK_ERR(im); } + if (!f->imported()) { + CHECK_ERR(ctx.irBuilder.visitEnd()); + } } // Parse exports. |