24 lines
762 B
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 + ")";
|
|
}
|
|
}
|
|
}
|