Files
Odin/core/bindgen/errors.odin
phillvancejr 42364f2fce sync with main
2022-02-04 13:16:40 -05:00

45 lines
1022 B
Odin

package bindgen
import "core:fmt"
import "core:os"
seenWarnings : map[string]bool;
print_warning :: proc(args : ..any) {
message := tcat(..args);
if !seenWarnings[message] {
fmt.eprint("[bindgen] Warning: ", message, "\n");
seenWarnings[message] = true;
}
}
print_error :: proc(data : ^ParserData, loc := #caller_location, args : ..any) {
message := tcat(..args);
min : u32 = 0;
for i := data.offset - 1; i > 0; i -= 1 {
if data.bytes[i] == '\n' {
min = i + 1;
break;
}
}
max := min + 200;
for i := min + 1; i < max; i += 1 {
if data.bytes[i] == '\n' {
max = i;
break;
}
}
line, _ := get_line_column(data);
fmt.eprint("[bindgen] Error: ", message, "\n");
fmt.eprint("[bindgen] ... from ", loc.procedure, "\n");
fmt.eprint("[bindgen] ... at line ", line, " within this context:\n");
fmt.eprint("> ", extract_string(data, min, max), "\n");
os.exit(1);
}