Initial type inference impl

This commit is contained in:
2026-09-08 18:52:47 +00:00
parent be53d3a5e5
commit 51bcac6225
5 changed files with 615 additions and 286 deletions
+16 -5
View File
@@ -2,6 +2,7 @@ mod declass;
mod declosure;
mod demutate;
mod flatten;
mod infer;
mod parse;
mod regify;
@@ -9,7 +10,9 @@ use std::process::Command;
use declass::declass;
use declosure::declosure;
use demutate::demutate;
use flatten::flatten;
use infer::infer;
use parse::QuickJSBinary;
use regify::regify;
@@ -44,15 +47,23 @@ fn main() {
let declassed = declass(reg_fns);
println!("{declassed:#?}");
println!("=== demutate runs ===");
for f in &declassed {
println!("{}: {:#?}", f.name, demutate::find_object_runs(f));
}
println!("=== after declosure ===");
let declosured = declosure(declassed);
println!("{declosured:#?}");
println!("=== after demutate ===");
let mut infer_fns = demutate(declosured);
println!("{infer_fns:#?}");
println!("=== after infer ===");
if let Some(main_id) = infer_fns.iter().position(|f| f.name == "main") {
let ret = infer(main_id, &mut infer_fns);
println!("main returns {ret:?}");
println!("{infer_fns:#?}");
} else {
println!("no main");
}
println!("{atoms:#?}");
/*println!("=== after deprototype ===");