feat(diag): format all lexer and sema errors with Diagnostic_Print

This commit is contained in:
2026-06-10 20:03:56 +03:00
parent b971775baf
commit 92962fa1b0
+28 -20
View File
@@ -133,11 +133,15 @@ func Cli_Compile(source: String, sourceName: String) -> String {
let lex: *Lexer = Lexer_Tokenize(source); let lex: *Lexer = Lexer_Tokenize(source);
PrintLine(" Lex done"); PrintLine(" Lex done");
if Lexer_DiagCount(lex) > 0 { if Lexer_DiagCount(lex) > 0 {
PrintLine("Lex errors:");
var i: int = 0; var i: int = 0;
while i < Lexer_DiagCount(lex) { while i < Lexer_DiagCount(lex) {
Print(" "); let diag: Diagnostic = Diagnostic {
PrintLine(lex.diags[i].message); message: lex.diags[i].message,
line: lex.diags[i].line,
column: lex.diags[i].column,
severity: 0,
};
Diagnostic_Print(&diag, sourceName);
i = i + 1; i = i + 1;
} }
return ""; return "";
@@ -166,11 +170,15 @@ func Cli_Compile(source: String, sourceName: String) -> String {
PrintLine(" Sema..."); PrintLine(" Sema...");
let sema: *Sema = Sema_Analyze(mod); let sema: *Sema = Sema_Analyze(mod);
if Sema_HasError(sema) { if Sema_HasError(sema) {
PrintLine("Sema errors:");
var i: int = 0; var i: int = 0;
while i < Sema_DiagCount(sema) { while i < Sema_DiagCount(sema) {
Print(" "); let diag: Diagnostic = Diagnostic {
PrintLine(sema.diags[i].message); message: sema.diags[i].message,
line: sema.diags[i].line,
column: sema.diags[i].column,
severity: 0,
};
Diagnostic_Print(&diag, sourceName);
i = i + 1; i = i + 1;
} }
return ""; return "";
@@ -328,15 +336,15 @@ func Cli_Check(srcPath: String) -> int {
// Phase 3: Sema // Phase 3: Sema
let sema: *Sema = Sema_Analyze(mod); let sema: *Sema = Sema_Analyze(mod);
if Sema_HasError(sema) { if Sema_HasError(sema) {
PrintLine("Sema errors found");
var i: int = 0; var i: int = 0;
while i < Sema_DiagCount(sema) { while i < Sema_DiagCount(sema) {
Print(" line "); let diag: Diagnostic = Diagnostic {
PrintInt(sema.diags[i].line as int64); message: sema.diags[i].message,
Print(" col "); line: sema.diags[i].line,
PrintInt(sema.diags[i].column as int64); column: sema.diags[i].column,
Print(": "); severity: 0,
PrintLine(sema.diags[i].message); };
Diagnostic_Print(&diag, sourceName);
i = i + 1; i = i + 1;
} }
return 1; return 1;
@@ -1080,15 +1088,15 @@ func Cli_BuildProject(projectDir: String) -> int {
PrintLine("Running sema..."); PrintLine("Running sema...");
let sema: *Sema = Sema_Analyze(merged); let sema: *Sema = Sema_Analyze(merged);
if Sema_HasError(sema) { if Sema_HasError(sema) {
PrintLine("Sema errors found");
var i: int = 0; var i: int = 0;
while i < Sema_DiagCount(sema) { while i < Sema_DiagCount(sema) {
Print(" line "); let diag: Diagnostic = Diagnostic {
PrintInt(sema.diags[i].line as int64); message: sema.diags[i].message,
Print(" col "); line: sema.diags[i].line,
PrintInt(sema.diags[i].column as int64); column: sema.diags[i].column,
Print(": "); severity: 0,
PrintLine(sema.diags[i].message); };
Diagnostic_Print(&diag, sourceName);
i = i + 1; i = i + 1;
} }
return 1; return 1;