Separate the IR evaluator, add an interesting stack-breaking case.

This commit is contained in:
2024-04-18 12:33:34 -07:00
parent 7d4f182a67
commit 6800064bdf
16 changed files with 283 additions and 122 deletions

View File

@@ -77,7 +77,8 @@ fn generate_tests(f: &mut File, path_so_far: PathBuf) -> std::io::Result<()> {
f,
" let ir = syntax.type_infer().expect(\"example is typed correctly\");"
)?;
writeln!(f, " let ir_result = ir.eval();")?;
writeln!(f, " let ir_evaluator = crate::ir::Evaluator::default();")?;
writeln!(f, " let ir_result = ir_evaluator.eval(ir.clone());")?;
writeln!(f, " match (&syntax_result, &ir_result) {{")?;
writeln!(f, " (Err(e1), Err(e2)) => assert_eq!(e1, e2),")?;
writeln!(f, " (Ok((v1, o1)), Ok((v2, o2))) => {{")?;