diff options
Diffstat (limited to 'src/parser')
-rw-r--r-- | src/parser/contexts.h | 7 | ||||
-rw-r--r-- | src/parser/parsers.h | 4 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/parser/contexts.h b/src/parser/contexts.h index e360a7175..6a3ab9614 100644 --- a/src/parser/contexts.h +++ b/src/parser/contexts.h @@ -388,9 +388,8 @@ struct NullInstrParserCtx { return Ok{}; } Result<> makeRefIsNull(Index) { return Ok{}; } - + Result<> makeRefFunc(Index, FuncIdxT) { return Ok{}; } Result<> makeRefEq(Index) { return Ok{}; } - Result<> makeRefI31(Index) { return Ok{}; } Result<> makeI31Get(Index, bool) { return Ok{}; } @@ -1259,6 +1258,10 @@ struct ParseDefsCtx : TypeParserCtx<ParseDefsCtx> { return withLoc(pos, irBuilder.makeRefIsNull()); } + Result<> makeRefFunc(Index pos, Name func) { + return withLoc(pos, irBuilder.makeRefFunc(func)); + } + Result<> makeRefEq(Index pos) { return withLoc(pos, irBuilder.makeRefEq()); } Result<> makeRefI31(Index pos) { diff --git a/src/parser/parsers.h b/src/parser/parsers.h index 44c4f959e..eb93fa717 100644 --- a/src/parser/parsers.h +++ b/src/parser/parsers.h @@ -1218,7 +1218,9 @@ template<typename Ctx> Result<> makeRefIsNull(Ctx& ctx, Index pos) { } template<typename Ctx> Result<> makeRefFunc(Ctx& ctx, Index pos) { - return ctx.in.err("unimplemented instruction"); + auto func = funcidx(ctx); + CHECK_ERR(func); + return ctx.makeRefFunc(pos, *func); } template<typename Ctx> Result<> makeRefEq(Ctx& ctx, Index pos) { |