From 92962fa1b0027629df140c7a1fe2dbbc3e9fede9 Mon Sep 17 00:00:00 2001 From: dimgigov Date: Wed, 10 Jun 2026 20:03:56 +0300 Subject: [PATCH] feat(diag): format all lexer and sema errors with Diagnostic_Print --- src/cli.bux | 48 ++++++++++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/src/cli.bux b/src/cli.bux index 8515659..b906def 100644 --- a/src/cli.bux +++ b/src/cli.bux @@ -133,11 +133,15 @@ func Cli_Compile(source: String, sourceName: String) -> String { let lex: *Lexer = Lexer_Tokenize(source); PrintLine(" Lex done"); if Lexer_DiagCount(lex) > 0 { - PrintLine("Lex errors:"); var i: int = 0; while i < Lexer_DiagCount(lex) { - Print(" "); - PrintLine(lex.diags[i].message); + let diag: Diagnostic = Diagnostic { + message: lex.diags[i].message, + line: lex.diags[i].line, + column: lex.diags[i].column, + severity: 0, + }; + Diagnostic_Print(&diag, sourceName); i = i + 1; } return ""; @@ -166,11 +170,15 @@ func Cli_Compile(source: String, sourceName: String) -> String { PrintLine(" Sema..."); let sema: *Sema = Sema_Analyze(mod); if Sema_HasError(sema) { - PrintLine("Sema errors:"); var i: int = 0; while i < Sema_DiagCount(sema) { - Print(" "); - PrintLine(sema.diags[i].message); + let diag: Diagnostic = Diagnostic { + message: sema.diags[i].message, + line: sema.diags[i].line, + column: sema.diags[i].column, + severity: 0, + }; + Diagnostic_Print(&diag, sourceName); i = i + 1; } return ""; @@ -328,15 +336,15 @@ func Cli_Check(srcPath: String) -> int { // Phase 3: Sema let sema: *Sema = Sema_Analyze(mod); if Sema_HasError(sema) { - PrintLine("Sema errors found"); var i: int = 0; while i < Sema_DiagCount(sema) { - Print(" line "); - PrintInt(sema.diags[i].line as int64); - Print(" col "); - PrintInt(sema.diags[i].column as int64); - Print(": "); - PrintLine(sema.diags[i].message); + let diag: Diagnostic = Diagnostic { + message: sema.diags[i].message, + line: sema.diags[i].line, + column: sema.diags[i].column, + severity: 0, + }; + Diagnostic_Print(&diag, sourceName); i = i + 1; } return 1; @@ -1080,15 +1088,15 @@ func Cli_BuildProject(projectDir: String) -> int { PrintLine("Running sema..."); let sema: *Sema = Sema_Analyze(merged); if Sema_HasError(sema) { - PrintLine("Sema errors found"); var i: int = 0; while i < Sema_DiagCount(sema) { - Print(" line "); - PrintInt(sema.diags[i].line as int64); - Print(" col "); - PrintInt(sema.diags[i].column as int64); - Print(": "); - PrintLine(sema.diags[i].message); + let diag: Diagnostic = Diagnostic { + message: sema.diags[i].message, + line: sema.diags[i].line, + column: sema.diags[i].column, + severity: 0, + }; + Diagnostic_Print(&diag, sourceName); i = i + 1; } return 1;