From b0acadc6011489fbed1555173f3605e9b5c80de6 Mon Sep 17 00:00:00 2001 From: Hydrostic Date: Sat, 13 Jun 2026 10:06:36 +0800 Subject: [PATCH] feat(main): Exit when error --- src/main.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main.rs b/src/main.rs index 9379d1e..7338a4a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,6 +13,7 @@ use clap::Parser as ArgParser; use crate::{ast::parser::Parser, ir::{cfg, generator::Generator}, lexer::lexer::Lexer, sema::analyzer::Analyzer}; use crate::backend::generator::Generator as ASMGerenerator; + /// Simple minic compiler built by Rust #[derive(ArgParser, Debug)] #[command(version, about, long_about = None)] @@ -76,16 +77,19 @@ fn main() { let (tokens, diagnostics) = lexer.finish(); if !diagnostics.is_empty() { diagnostics.print(&format!("{}", source_path.display()), &full_text); + std::process::exit(1); } let mut parser = Parser::new(tokens, diagnostics); let compile_unit = parser.parse(); if !parser.diagnostics.is_empty() { parser.diagnostics.print(&format!("{}", source_path.display()), &full_text); + std::process::exit(1); } let mut analyzer = Analyzer::new(); let hir = analyzer.analyze(compile_unit); if !analyzer.get_diagnostics().is_empty() { analyzer.get_diagnostics().print(&format!("{}", source_path.display()), &full_text); + std::process::exit(1); } let mut generator = Generator::new(&analyzer); let ir = cfg::optimize_ir(generator.emit(hir));