colored caret

This commit is contained in:
SimonFJ20 2025-03-18 15:59:46 +01:00
parent b805d9b48f
commit fb565d64ad

View File

@ -397,27 +397,28 @@ class Reporter {
public info(msg: string, loc?: ast.Loc) {
console.error(
`%cerror%c: ${msg}%c`,
`%cinfo%c: ${msg}%c`,
"color: cyan; font-weight: bold",
"font-weight: bold",
"",
);
if (loc) {
this.printLoc(loc);
this.printLoc(loc, "cyan");
}
}
private printLoc(loc: ast.Loc) {
private printLoc(loc: ast.Loc, caretColor = "red") {
const line = this.text.split("\n")[loc.start.line - 1];
const posPad = " ".repeat(loc.start.column - 1);
const lineNr = loc.start.line.toString().padStart(3, " ");
const lPad = " ".repeat(lineNr.length + 1);
const pos = `./${loc.source}:${loc.start.line}:${loc.start.column}`;
console.error(
`%c --> ${pos}\n${lPad}|\n${lineNr} |%c${line}%c\n${lPad}|${posPad}^%c`,
`%c --> ${pos}\n${lPad}|\n${lineNr} |%c${line}%c\n${lPad}|${posPad}%c^%c`,
"color: gray",
"color: lightgray",
"color: gray",
`color: ${caretColor}; font-weight: bold`,
"",
);
}