feat: improved parsing and regression test suite

This commit is contained in:
Brett Broadhurst 2026-02-27 18:07:02 -07:00
parent 4ebdd3c66e
commit 619eb3b338
Failed to generate hash of commit
39 changed files with 1116 additions and 339 deletions

View file

@ -208,15 +208,15 @@ fn writeType(r: *Render, writer: *std.Io.Writer, node: *const Ast.Node) !void {
fn writeLexeme(r: *Render, writer: *std.Io.Writer, node: *const Ast.Node) !void {
const bytes = r.tree.source;
const lexeme = bytes[node.source_start..node.source_end];
const lexeme = bytes[node.loc.start..node.loc.end];
try r.tty_config.setColor(writer, .yellow);
try writer.print("`{s}`", .{lexeme});
try r.tty_config.setColor(writer, .reset);
}
fn writeLineSpan(r: *Render, writer: *std.Io.Writer, node: *const Ast.Node) !void {
const line_start = r.lines.calculateLine(node.source_start);
const line_end = r.lines.calculateLine(node.source_end);
const line_start = r.lines.calculateLine(node.loc.start);
const line_end = r.lines.calculateLine(node.loc.end);
try r.tty_config.setColor(writer, .white);
try writer.writeByte('<');
@ -242,10 +242,10 @@ fn writeLineSpan(r: *Render, writer: *std.Io.Writer, node: *const Ast.Node) !voi
}
fn writeColumnSpan(r: *Render, writer: *std.Io.Writer, node: *const Ast.Node) !void {
const line_start = r.lines.calculateLine(node.source_start);
const line_start = r.lines.calculateLine(node.loc.start);
const line_range = r.lines.ranges.items[line_start];
const column_start = (node.source_start - line_range.start);
const column_end = (node.source_end - line_range.start);
const column_start = (node.loc.start - line_range.start);
const column_end = (node.loc.end - line_range.start);
try r.tty_config.setColor(writer, .white);
try writer.writeByte('<');
@ -271,10 +271,10 @@ fn writeColumnSpan(r: *Render, writer: *std.Io.Writer, node: *const Ast.Node) !v
}
fn writeLineColumnSpan(r: *Render, writer: *std.Io.Writer, node: *const Ast.Node) !void {
const line_start = r.lines.calculateLine(node.source_start);
const line_start = r.lines.calculateLine(node.loc.start);
const line_range = r.lines.ranges.items[line_start];
const column_start = (node.source_start - line_range.start);
const column_end = (node.source_end - line_range.start);
const column_start = (node.loc.start - line_range.start);
const column_end = (node.loc.end - line_range.start);
try r.tty_config.setColor(writer, .white);
try writer.writeByte('<');