summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/wat-writer.cc12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/wat-writer.cc b/src/wat-writer.cc
index ea70edb3..9845b899 100644
--- a/src/wat-writer.cc
+++ b/src/wat-writer.cc
@@ -671,7 +671,11 @@ Result WatWriter::ExprVisitorDelegate::OnCallIndirectExpr(
writer_->WritePutsSpace(Opcode::CallIndirect_Opcode.GetName());
writer_->WriteVarUnlessZero(expr->table, NextChar::Space);
writer_->WriteOpenSpace("type");
- writer_->WriteVar(expr->decl.type_var, NextChar::Newline);
+ const auto type_var =
+ expr->decl.has_func_type
+ ? expr->decl.type_var
+ : Var{writer_->module.GetFuncTypeIndex(expr->decl), expr->loc};
+ writer_->WriteVar(type_var, NextChar::Newline);
writer_->WriteCloseNewline();
return Result::Ok;
}
@@ -911,7 +915,11 @@ Result WatWriter::ExprVisitorDelegate::OnReturnCallIndirectExpr(
ReturnCallIndirectExpr* expr) {
writer_->WritePutsSpace(Opcode::ReturnCallIndirect_Opcode.GetName());
writer_->WriteOpenSpace("type");
- writer_->WriteVar(expr->decl.type_var, NextChar::Space);
+ const auto type_var =
+ expr->decl.has_func_type
+ ? expr->decl.type_var
+ : Var{writer_->module.GetFuncTypeIndex(expr->decl), expr->loc};
+ writer_->WriteVar(type_var, NextChar::Space);
writer_->WriteCloseNewline();
return Result::Ok;
}