diff --git a/src/main/java/carpet/script/exception/CarpetExpressionException.java b/src/main/java/carpet/script/exception/CarpetExpressionException.java index 7d3e79c6..849e99ad 100644 --- a/src/main/java/carpet/script/exception/CarpetExpressionException.java +++ b/src/main/java/carpet/script/exception/CarpetExpressionException.java @@ -5,7 +5,7 @@ import carpet.utils.Messenger; import java.util.List; import net.minecraft.commands.CommandSourceStack; -public class CarpetExpressionException extends RuntimeException implements ResolvedException +public class CarpetExpressionException extends StacklessRuntimeException implements ResolvedException { public final List stack; diff --git a/src/main/java/carpet/script/exception/ExitStatement.java b/src/main/java/carpet/script/exception/ExitStatement.java index 0504e896..eb258d6f 100644 --- a/src/main/java/carpet/script/exception/ExitStatement.java +++ b/src/main/java/carpet/script/exception/ExitStatement.java @@ -3,7 +3,7 @@ package carpet.script.exception; import carpet.script.value.Value; /* Exception thrown to terminate execution mid expression (aka return statement) */ -public class ExitStatement extends RuntimeException +public class ExitStatement extends StacklessRuntimeException { public final Value retval; public ExitStatement(Value value) diff --git a/src/main/java/carpet/script/exception/ExpressionException.java b/src/main/java/carpet/script/exception/ExpressionException.java index ddd66c9e..3ce14883 100644 --- a/src/main/java/carpet/script/exception/ExpressionException.java +++ b/src/main/java/carpet/script/exception/ExpressionException.java @@ -13,7 +13,7 @@ import java.util.List; import java.util.function.Supplier; /* The expression evaluators exception class. */ -public class ExpressionException extends RuntimeException implements ResolvedException +public class ExpressionException extends StacklessRuntimeException implements ResolvedException { public final Context context; public final Tokenizer.Token token; diff --git a/src/main/java/carpet/script/exception/InternalExpressionException.java b/src/main/java/carpet/script/exception/InternalExpressionException.java index 1ebab8f3..8706f710 100644 --- a/src/main/java/carpet/script/exception/InternalExpressionException.java +++ b/src/main/java/carpet/script/exception/InternalExpressionException.java @@ -9,7 +9,7 @@ import java.util.ArrayList; import java.util.List; /* The internal expression evaluators exception class. */ -public class InternalExpressionException extends RuntimeException +public class InternalExpressionException extends StacklessRuntimeException { public List stack = new ArrayList<>(); public InternalExpressionException(String message) diff --git a/src/main/java/carpet/script/exception/StacklessRuntimeException.java b/src/main/java/carpet/script/exception/StacklessRuntimeException.java new file mode 100644 index 00000000..e200d065 --- /dev/null +++ b/src/main/java/carpet/script/exception/StacklessRuntimeException.java @@ -0,0 +1,19 @@ +package carpet.script.exception; + +/** + * A type of {@link RuntimeException} that doesn't spend time producing and filling a stacktrace + */ +abstract class StacklessRuntimeException extends RuntimeException { + public StacklessRuntimeException() { + super(); + } + + public StacklessRuntimeException(String message) { + super(message); + } + + @Override + public Throwable fillInStackTrace() { + return this; + } +}