diff options
Diffstat (limited to 'src/parser/wat-parser.cpp')
-rw-r--r-- | src/parser/wat-parser.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
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. |