// selfhost/cmd/wcc/err.ww — port of cmd/wcc/err.c. // // Diagnostics. Plan 9 style: short, no levels beyond fatal/error/warn. // Output goes through os.write so we don't pull in libc stdio. use os; use fmt; type pos = struct { file: str, line: i32, col: i32, }; let nerrors: i32 = 0; let nwarnings: i32 = 0; export fn fatal(msg: str) void = { fmt.errln(msg); os.exit(1); }; export fn errorf(p: pos, msg: str) void = { os.write(2, p.file.ptr, p.file.len: u64); os.write(2, ": error: ".ptr, 9u64); os.write(2, msg.ptr, msg.len: u64); os.write(2, "\n".ptr, 1u64); nerrors += 1; }; export fn warnf(p: pos, msg: str) void = { os.write(2, p.file.ptr, p.file.len: u64); os.write(2, ": warning: ".ptr, 11u64); os.write(2, msg.ptr, msg.len: u64); os.write(2, "\n".ptr, 1u64); nwarnings += 1; };