From f665787511b6c6f113f5e99b7da278c4c06ea317 Mon Sep 17 00:00:00 2001 From: Moe Charm Date: Mon, 25 Aug 2025 20:19:04 +0900 Subject: [PATCH] Tests(MIR): add extern_call console.log lowering test and verbose MIR dump assertion. --- src/mir/mod.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/mir/mod.rs b/src/mir/mod.rs index dfed2302..a568cc49 100644 --- a/src/mir/mod.rs +++ b/src/mir/mod.rs @@ -186,6 +186,26 @@ mod tests { }); assert!(has_typeop, "Expected TypeOp lowering for print(obj.is(...))"); } + + #[test] + fn test_lowering_extern_console_log() { + // Build AST: console.log("hi") → ExternCall env.console.log + let ast = ASTNode::Expression { + expr: Box::new(ASTNode::MethodCall { + object: Box::new(ASTNode::Variable { name: "console".to_string(), span: crate::ast::Span::unknown() }), + method: "log".to_string(), + arguments: vec![ ASTNode::Literal { value: LiteralValue::String("hi".to_string()), span: crate::ast::Span::unknown() } ], + span: crate::ast::Span::unknown(), + }), + span: crate::ast::Span::unknown(), + }; + + let mut compiler = MirCompiler::new(); + let result = compiler.compile(ast).expect("compile should succeed"); + let dump = MirPrinter::verbose().print_module(&result.module); + + assert!(dump.contains("extern_call env.console.log"), "Expected extern_call env.console.log in MIR dump. Got:\n{}", dump); + } #[test] fn test_throw_compilation() {