summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-04-24 12:37:49 +0100
committerMichael Williamson <mike@zwobble.org>2026-04-24 12:37:49 +0100
commitb2a60a830841e59622bc571e9488f018a9e4728e (patch)
treec9f1ffc3ea69db26d8ef7eaa894934634fb98696
parent045969708f21e19f852256f8bf934f4289b96495 (diff)
Store Source in SourceError
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/errors/SourceError.java12
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/parser/ParseError.java3
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/parser/UnexpectedTokenError.java3
3 files changed, 10 insertions, 8 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/errors/SourceError.java b/src/main/java/org/zwobble/hobgoblin/compiler/errors/SourceError.java
index afeb9b4..c60167f 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/errors/SourceError.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/errors/SourceError.java
@@ -1,20 +1,20 @@
package org.zwobble.hobgoblin.compiler.errors;
-import org.zwobble.sourcetext.SourceRange;
+import org.zwobble.hobgoblin.compiler.sources.Source;
/**
* An error in the source code. These errors are expected when attempting to
* compile invalid code.
*/
public class SourceError extends RuntimeException {
- private final SourceRange sourceRange;
+ private final Source source;
- public SourceError(String message, SourceRange sourceRange) {
+ public SourceError(String message, Source source) {
super(message);
- this.sourceRange = sourceRange;
+ this.source = source;
}
- public SourceRange sourceRange() {
- return sourceRange;
+ public Source source() {
+ return source;
}
}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/parser/ParseError.java b/src/main/java/org/zwobble/hobgoblin/compiler/parser/ParseError.java
index 78d063d..36e5bdb 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/ParseError.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/ParseError.java
@@ -1,6 +1,7 @@
package org.zwobble.hobgoblin.compiler.parser;
import org.zwobble.hobgoblin.compiler.errors.SourceError;
+import org.zwobble.hobgoblin.compiler.sources.FileFragmentSource;
import org.zwobble.sourcetext.SourceRange;
public class ParseError extends SourceError {
@@ -18,6 +19,6 @@ public class ParseError extends SourceError {
}
public ParseError(String message, SourceRange sourceRange) {
- super(message, sourceRange);
+ super(message, new FileFragmentSource(sourceRange));
}
}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/parser/UnexpectedTokenError.java b/src/main/java/org/zwobble/hobgoblin/compiler/parser/UnexpectedTokenError.java
index 543aeb4..3b7515e 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/UnexpectedTokenError.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/UnexpectedTokenError.java
@@ -1,6 +1,7 @@
package org.zwobble.hobgoblin.compiler.parser;
import org.zwobble.hobgoblin.compiler.errors.SourceError;
+import org.zwobble.hobgoblin.compiler.sources.FileFragmentSource;
public class UnexpectedTokenError extends SourceError {
private final String expected;
@@ -12,7 +13,7 @@ public class UnexpectedTokenError extends SourceError {
) {
super(
"Expected: " + expected + "\nBut got: " + actual.tokenType() + " \"" + actual.charSequence() + "\"",
- actual.sourceRange()
+ new FileFragmentSource(actual.sourceRange())
);
this.expected = expected;
this.actual = actual;