java-commons/muscript/src/main/java/io/gitlab/jfronny/muscript/error/StackFrame.java

24 lines
762 B
Java

package io.gitlab.jfronny.muscript.error;
public sealed interface StackFrame {
record Raw(String name, int chStart) implements StackFrame {
@Override
public String toString() {
return name + " (call: character " + chStart + ")";
}
public Lined lined(String source) {
int lineStart = source.lastIndexOf('\n', chStart);
int lineIndex = lineStart > 0 ? (int) source.substring(0, lineStart).chars().filter(c -> c == '\n').count() : 0;
return new Lined(name, lineIndex + 1);
}
}
record Lined(String name, int row) implements StackFrame {
@Override
public String toString() {
return name + " (call: line " + row + ")";
}
}
}