From 7ff404bab52df237606f2018ccab722b05beb955 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 1 Jan 2025 10:56:32 +0000 Subject: Highlight ranges in source description --- .../java/org/shedlang/compiler/sources/FileFragmentSource.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/sources/FileFragmentSource.java b/src/main/java/org/shedlang/compiler/sources/FileFragmentSource.java index fe0c6271..0fc05672 100644 --- a/src/main/java/org/shedlang/compiler/sources/FileFragmentSource.java +++ b/src/main/java/org/shedlang/compiler/sources/FileFragmentSource.java @@ -22,7 +22,10 @@ public record FileFragmentSource( return context( line, lineIndex, - characterIndexStart - position + characterIndexStart - position, + nextLinePosition <= characterIndexEnd + ? 1 + : Math.max(characterIndexEnd - characterIndexStart, 1) ); } position = nextLinePosition; @@ -64,9 +67,9 @@ public record FileFragmentSource( return at(length, length); } - private String context(String line, int lineIndex, int columnIndex) { + private String context(String line, int lineIndex, int columnIndex, int length) { var lineNumber = lineIndex + 1; var columnNumber = columnIndex + 1; - return filename + ":" + lineNumber + ":" + columnNumber + "\n" + line + "\n" + " ".repeat(columnIndex) + "^"; + return filename + ":" + lineNumber + ":" + columnNumber + "\n" + line + "\n" + " ".repeat(columnIndex) + "^".repeat(length); } } -- cgit v1.2.3