implement some initial f32 support

This commit is contained in:
2021-10-27 20:03:23 +02:00
parent 7f5dd9aa80
commit 23d926dbb3
6 changed files with 146 additions and 27 deletions

View File

@@ -126,6 +126,7 @@ fn tc_block<'a>(context: &mut Context<'a>, block: &mut ast::Block<'a>) -> Result
fn tc_expression<'a>(context: &mut Context<'a>, expr: &mut ast::Expression<'a>) -> Result<()> {
expr.type_ = match expr.expr {
ast::Expr::I32Const(_) => Some(ast::Type::I32),
ast::Expr::F32Const(_) => Some(ast::Type::F32),
ast::Expr::BinOp {
position,
op,
@@ -213,6 +214,20 @@ fn tc_expression<'a>(context: &mut Context<'a>, expr: &mut ast::Expression<'a>)
}
None
}
ast::Expr::Cast {
position,
ref mut value,
type_,
} => {
tc_expression(context, value)?;
if value.type_.is_none() {
return Err(Error {
position,
message: "Cannot cast void".into(),
});
}
Some(type_)
}
};
Ok(())
}