feat(diag): format all lexer and sema errors with Diagnostic_Print
This commit is contained in:
+28
-20
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user