aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/sources/FileFragmentSource.java9
1 files changed, 6 insertions, 3 deletions
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);
}
}