conlang: Single-expression functions

This commit is contained in:
2025-02-20 21:59:42 -06:00
parent 3b14186b70
commit 772286eefa
7 changed files with 18 additions and 8 deletions

View File

@@ -146,7 +146,7 @@ pub struct Function {
pub name: Sym,
pub sign: TyFn,
pub bind: Vec<Param>,
pub body: Option<Block>,
pub body: Option<Expr>,
}
/// A single parameter for a [Function]

View File

@@ -107,7 +107,7 @@ pub trait Fold {
name: self.fold_sym(name),
sign: self.fold_ty_fn(sign),
bind: bind.into_iter().map(|p| self.fold_param(p)).collect(),
body: body.map(|b| self.fold_block(b)),
body: body.map(|b| self.fold_expr(b)),
}
}
fn fold_param(&mut self, p: Param) -> Param {

View File

@@ -85,7 +85,7 @@ pub trait Visit<'a>: Sized {
self.visit_ty_fn(sign);
bind.iter().for_each(|p| self.visit_param(p));
if let Some(b) = body {
self.visit_block(b)
self.visit_expr(b)
}
}
fn visit_param(&mut self, p: &'a Param) {