Add formatting, fix typechecking for associated functions
This commit is contained in:
parent
24f11a77d2
commit
4f57ed399f
@ -49,6 +49,9 @@ impl Display for Module {
|
|||||||
for typedef in &self.typedefs {
|
for typedef in &self.typedefs {
|
||||||
writeln!(inner_f, "{}", typedef)?;
|
writeln!(inner_f, "{}", typedef)?;
|
||||||
}
|
}
|
||||||
|
for (ty, fun) in &self.associated_functions {
|
||||||
|
writeln!(inner_f, "(Assoc {}) {}", ty, fun)?;
|
||||||
|
}
|
||||||
for fun in &self.functions {
|
for fun in &self.functions {
|
||||||
writeln!(inner_f, "{}", fun)?;
|
writeln!(inner_f, "{}", fun)?;
|
||||||
}
|
}
|
||||||
|
@ -68,6 +68,11 @@ impl<'t> Pass for TypeCheck<'t> {
|
|||||||
state.ok(res, binop.block_meta().unwrap_or(binop.signature()));
|
state.ok(res, binop.block_meta().unwrap_or(binop.signature()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (_, function) in &mut module.associated_functions {
|
||||||
|
let res = function.typecheck(&self.refs, &mut state.inner());
|
||||||
|
state.ok(res, function.block_meta());
|
||||||
|
}
|
||||||
|
|
||||||
for function in &mut module.functions {
|
for function in &mut module.functions {
|
||||||
let res = function.typecheck(&self.refs, &mut state.inner());
|
let res = function.typecheck(&self.refs, &mut state.inner());
|
||||||
state.ok(res, function.block_meta());
|
state.ok(res, function.block_meta());
|
||||||
|
@ -120,6 +120,11 @@ impl<'t> Pass for TypeInference<'t> {
|
|||||||
state.ok(res, binop.block_meta().unwrap_or(binop.signature()));
|
state.ok(res, binop.block_meta().unwrap_or(binop.signature()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (_, function) in &mut module.associated_functions {
|
||||||
|
let res = function.infer_types(&self.refs, &mut state.inner());
|
||||||
|
state.ok(res, function.block_meta());
|
||||||
|
}
|
||||||
|
|
||||||
for function in &mut module.functions {
|
for function in &mut module.functions {
|
||||||
let res = function.infer_types(&self.refs, &mut state.inner());
|
let res = function.infer_types(&self.refs, &mut state.inner());
|
||||||
state.ok(res, function.block_meta());
|
state.ok(res, function.block_meta());
|
||||||
|
Loading…
Reference in New Issue
Block a user