From 7469be61700daf1d19bfcb7085da4f635d0fd09f Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 10 Jan 2016 20:11:38 +0000 Subject: Move interpreter exceptions into their own package --- .../interpreter/ConditionMustBeBoolean.java | 46 ----------------- .../zwobble/couscous/interpreter/Environment.java | 2 + .../zwobble/couscous/interpreter/Evaluator.java | 2 + .../couscous/interpreter/InterpreterException.java | 6 --- .../couscous/interpreter/InterpreterTypes.java | 1 + .../zwobble/couscous/interpreter/InvalidCast.java | 22 --------- .../zwobble/couscous/interpreter/NoSuchField.java | 43 ---------------- .../zwobble/couscous/interpreter/NoSuchMethod.java | 23 --------- .../zwobble/couscous/interpreter/UnboundField.java | 44 ----------------- .../couscous/interpreter/UnboundVariable.java | 46 ----------------- .../couscous/interpreter/UnexpectedValueType.java | 57 ---------------------- .../couscous/interpreter/VariableNotInScope.java | 46 ----------------- .../interpreter/WrongNumberOfArguments.java | 49 ------------------- .../interpreter/errors/ConditionMustBeBoolean.java | 46 +++++++++++++++++ .../interpreter/errors/InterpreterException.java | 6 +++ .../couscous/interpreter/errors/InvalidCast.java | 22 +++++++++ .../couscous/interpreter/errors/NoSuchField.java | 43 ++++++++++++++++ .../couscous/interpreter/errors/NoSuchMethod.java | 23 +++++++++ .../couscous/interpreter/errors/UnboundField.java | 44 +++++++++++++++++ .../interpreter/errors/UnboundVariable.java | 46 +++++++++++++++++ .../interpreter/errors/UnexpectedValueType.java | 57 ++++++++++++++++++++++ .../interpreter/errors/VariableNotInScope.java | 46 +++++++++++++++++ .../interpreter/errors/WrongNumberOfArguments.java | 49 +++++++++++++++++++ .../values/BooleanInterpreterValue.java | 2 +- .../couscous/interpreter/values/ConcreteType.java | 2 + .../values/IntegerInterpreterValue.java | 1 + .../interpreter/values/ObjectInterpreterValue.java | 4 +- .../interpreter/values/StringInterpreterValue.java | 2 +- .../interpreter/values/TypeInterpreterValue.java | 2 +- .../interpreter/values/UnitInterpreterValue.java | 2 +- 30 files changed, 396 insertions(+), 388 deletions(-) delete mode 100644 src/main/java/org/zwobble/couscous/interpreter/ConditionMustBeBoolean.java delete mode 100644 src/main/java/org/zwobble/couscous/interpreter/InterpreterException.java delete mode 100644 src/main/java/org/zwobble/couscous/interpreter/InvalidCast.java delete mode 100644 src/main/java/org/zwobble/couscous/interpreter/NoSuchField.java delete mode 100644 src/main/java/org/zwobble/couscous/interpreter/NoSuchMethod.java delete mode 100644 src/main/java/org/zwobble/couscous/interpreter/UnboundField.java delete mode 100644 src/main/java/org/zwobble/couscous/interpreter/UnboundVariable.java delete mode 100644 src/main/java/org/zwobble/couscous/interpreter/UnexpectedValueType.java delete mode 100644 src/main/java/org/zwobble/couscous/interpreter/VariableNotInScope.java delete mode 100644 src/main/java/org/zwobble/couscous/interpreter/WrongNumberOfArguments.java create mode 100644 src/main/java/org/zwobble/couscous/interpreter/errors/ConditionMustBeBoolean.java create mode 100644 src/main/java/org/zwobble/couscous/interpreter/errors/InterpreterException.java create mode 100644 src/main/java/org/zwobble/couscous/interpreter/errors/InvalidCast.java create mode 100644 src/main/java/org/zwobble/couscous/interpreter/errors/NoSuchField.java create mode 100644 src/main/java/org/zwobble/couscous/interpreter/errors/NoSuchMethod.java create mode 100644 src/main/java/org/zwobble/couscous/interpreter/errors/UnboundField.java create mode 100644 src/main/java/org/zwobble/couscous/interpreter/errors/UnboundVariable.java create mode 100644 src/main/java/org/zwobble/couscous/interpreter/errors/UnexpectedValueType.java create mode 100644 src/main/java/org/zwobble/couscous/interpreter/errors/VariableNotInScope.java create mode 100644 src/main/java/org/zwobble/couscous/interpreter/errors/WrongNumberOfArguments.java (limited to 'src/main/java') diff --git a/src/main/java/org/zwobble/couscous/interpreter/ConditionMustBeBoolean.java b/src/main/java/org/zwobble/couscous/interpreter/ConditionMustBeBoolean.java deleted file mode 100644 index b9cf32a..0000000 --- a/src/main/java/org/zwobble/couscous/interpreter/ConditionMustBeBoolean.java +++ /dev/null @@ -1,46 +0,0 @@ -package org.zwobble.couscous.interpreter; - -import org.zwobble.couscous.interpreter.values.InterpreterValue; - -public final class ConditionMustBeBoolean extends InterpreterException { - private static final long serialVersionUID = 1L; - private final InterpreterValue actual; - - public ConditionMustBeBoolean(final InterpreterValue actual) { - this.actual = actual; - } - - public InterpreterValue getActual() { - return this.actual; - } - - @java.lang.Override - public java.lang.String toString() { - return "ConditionMustBeBoolean(actual=" + this.getActual() + ")"; - } - - @java.lang.Override - public boolean equals(final java.lang.Object o) { - if (o == this) return true; - if (!(o instanceof ConditionMustBeBoolean)) return false; - final ConditionMustBeBoolean other = (ConditionMustBeBoolean)o; - if (!other.canEqual((java.lang.Object)this)) return false; - final java.lang.Object this$actual = this.getActual(); - final java.lang.Object other$actual = other.getActual(); - if (this$actual == null ? other$actual != null : !this$actual.equals(other$actual)) return false; - return true; - } - - protected boolean canEqual(final java.lang.Object other) { - return other instanceof ConditionMustBeBoolean; - } - - @java.lang.Override - public int hashCode() { - final int PRIME = 59; - int result = 1; - final java.lang.Object $actual = this.getActual(); - result = result * PRIME + ($actual == null ? 43 : $actual.hashCode()); - return result; - } -} \ No newline at end of file diff --git a/src/main/java/org/zwobble/couscous/interpreter/Environment.java b/src/main/java/org/zwobble/couscous/interpreter/Environment.java index 23e2fdf..e57f8e5 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/Environment.java +++ b/src/main/java/org/zwobble/couscous/interpreter/Environment.java @@ -6,6 +6,8 @@ import org.zwobble.couscous.ast.TypeName; import org.zwobble.couscous.ast.VariableDeclaration; import org.zwobble.couscous.ast.VariableNode; import org.zwobble.couscous.ast.identifiers.Identifier; +import org.zwobble.couscous.interpreter.errors.UnboundVariable; +import org.zwobble.couscous.interpreter.errors.VariableNotInScope; import org.zwobble.couscous.interpreter.values.ConcreteType; import org.zwobble.couscous.interpreter.values.InterpreterValue; import static java.util.stream.Collectors.toMap; diff --git a/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java b/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java index 56ccca7..3bcf3ac 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java +++ b/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java @@ -3,6 +3,8 @@ package org.zwobble.couscous.interpreter; import org.zwobble.couscous.ast.*; import org.zwobble.couscous.ast.visitors.AssignableExpressionNodeVisitor; import org.zwobble.couscous.ast.visitors.ExpressionNodeMapper; +import org.zwobble.couscous.interpreter.errors.ConditionMustBeBoolean; +import org.zwobble.couscous.interpreter.errors.InvalidCast; import org.zwobble.couscous.interpreter.values.*; import org.zwobble.couscous.values.BooleanValue; import org.zwobble.couscous.values.IntegerValue; diff --git a/src/main/java/org/zwobble/couscous/interpreter/InterpreterException.java b/src/main/java/org/zwobble/couscous/interpreter/InterpreterException.java deleted file mode 100644 index d6d7020..0000000 --- a/src/main/java/org/zwobble/couscous/interpreter/InterpreterException.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.zwobble.couscous.interpreter; - -public class InterpreterException extends RuntimeException { - private static final long serialVersionUID = 1L; - -} diff --git a/src/main/java/org/zwobble/couscous/interpreter/InterpreterTypes.java b/src/main/java/org/zwobble/couscous/interpreter/InterpreterTypes.java index 71f875d..b43e926 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/InterpreterTypes.java +++ b/src/main/java/org/zwobble/couscous/interpreter/InterpreterTypes.java @@ -1,6 +1,7 @@ package org.zwobble.couscous.interpreter; import org.zwobble.couscous.ast.TypeName; +import org.zwobble.couscous.interpreter.errors.UnexpectedValueType; import org.zwobble.couscous.interpreter.values.ConcreteType; import org.zwobble.couscous.interpreter.values.InterpreterValue; import org.zwobble.couscous.values.ObjectValues; diff --git a/src/main/java/org/zwobble/couscous/interpreter/InvalidCast.java b/src/main/java/org/zwobble/couscous/interpreter/InvalidCast.java deleted file mode 100644 index 1d89ad1..0000000 --- a/src/main/java/org/zwobble/couscous/interpreter/InvalidCast.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.zwobble.couscous.interpreter; - -import org.zwobble.couscous.ast.TypeName; - -public class InvalidCast extends RuntimeException { - private final TypeName expected; - private final TypeName actual; - - public InvalidCast(TypeName expected, TypeName actual) { - - this.expected = expected; - this.actual = actual; - } - - public TypeName getExpected() { - return expected; - } - - public TypeName getActual() { - return actual; - } -} diff --git a/src/main/java/org/zwobble/couscous/interpreter/NoSuchField.java b/src/main/java/org/zwobble/couscous/interpreter/NoSuchField.java deleted file mode 100644 index 03b714f..0000000 --- a/src/main/java/org/zwobble/couscous/interpreter/NoSuchField.java +++ /dev/null @@ -1,43 +0,0 @@ -package org.zwobble.couscous.interpreter; - -public final class NoSuchField extends InterpreterException { - private static final long serialVersionUID = 1L; - private final String fieldName; - - public NoSuchField(final String fieldName) { - this.fieldName = fieldName; - } - - public String getFieldName() { - return this.fieldName; - } - - public java.lang.String toString() { - return "NoSuchField(fieldName=" + this.getFieldName() + ")"; - } - - @java.lang.Override - public boolean equals(final java.lang.Object o) { - if (o == this) return true; - if (!(o instanceof NoSuchField)) return false; - final NoSuchField other = (NoSuchField)o; - if (!other.canEqual((java.lang.Object)this)) return false; - final java.lang.Object this$fieldName = this.getFieldName(); - final java.lang.Object other$fieldName = other.getFieldName(); - if (this$fieldName == null ? other$fieldName != null : !this$fieldName.equals(other$fieldName)) return false; - return true; - } - - protected boolean canEqual(final java.lang.Object other) { - return other instanceof NoSuchField; - } - - @java.lang.Override - public int hashCode() { - final int PRIME = 59; - int result = 1; - final java.lang.Object $fieldName = this.getFieldName(); - result = result * PRIME + ($fieldName == null ? 43 : $fieldName.hashCode()); - return result; - } -} \ No newline at end of file diff --git a/src/main/java/org/zwobble/couscous/interpreter/NoSuchMethod.java b/src/main/java/org/zwobble/couscous/interpreter/NoSuchMethod.java deleted file mode 100644 index 734c254..0000000 --- a/src/main/java/org/zwobble/couscous/interpreter/NoSuchMethod.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.zwobble.couscous.interpreter; - -import org.zwobble.couscous.ast.MethodSignature; - -public final class NoSuchMethod extends InterpreterException { - private static final long serialVersionUID = 1L; - private MethodSignature signature; - - public NoSuchMethod(MethodSignature signature) { - this.signature = signature; - } - - public MethodSignature getSignature() { - return signature; - } - - @Override - public String toString() { - return "NoSuchMethod(" + - "signature=" + signature + - ") " + super.toString(); - } -} \ No newline at end of file diff --git a/src/main/java/org/zwobble/couscous/interpreter/UnboundField.java b/src/main/java/org/zwobble/couscous/interpreter/UnboundField.java deleted file mode 100644 index 1d21071..0000000 --- a/src/main/java/org/zwobble/couscous/interpreter/UnboundField.java +++ /dev/null @@ -1,44 +0,0 @@ -package org.zwobble.couscous.interpreter; - -public final class UnboundField extends InterpreterException { - private static final long serialVersionUID = 1L; - private final String fieldName; - - public UnboundField(final String fieldName) { - this.fieldName = fieldName; - } - - public String getFieldName() { - return this.fieldName; - } - - @java.lang.Override - public java.lang.String toString() { - return "UnboundField(fieldName=" + this.getFieldName() + ")"; - } - - @java.lang.Override - public boolean equals(final java.lang.Object o) { - if (o == this) return true; - if (!(o instanceof UnboundField)) return false; - final UnboundField other = (UnboundField)o; - if (!other.canEqual((java.lang.Object)this)) return false; - final java.lang.Object this$fieldName = this.getFieldName(); - final java.lang.Object other$fieldName = other.getFieldName(); - if (this$fieldName == null ? other$fieldName != null : !this$fieldName.equals(other$fieldName)) return false; - return true; - } - - protected boolean canEqual(final java.lang.Object other) { - return other instanceof UnboundField; - } - - @java.lang.Override - public int hashCode() { - final int PRIME = 59; - int result = 1; - final java.lang.Object $fieldName = this.getFieldName(); - result = result * PRIME + ($fieldName == null ? 43 : $fieldName.hashCode()); - return result; - } -} \ No newline at end of file diff --git a/src/main/java/org/zwobble/couscous/interpreter/UnboundVariable.java b/src/main/java/org/zwobble/couscous/interpreter/UnboundVariable.java deleted file mode 100644 index 1dba54b..0000000 --- a/src/main/java/org/zwobble/couscous/interpreter/UnboundVariable.java +++ /dev/null @@ -1,46 +0,0 @@ -package org.zwobble.couscous.interpreter; - -import org.zwobble.couscous.ast.identifiers.Identifier; - -public final class UnboundVariable extends InterpreterException { - private static final long serialVersionUID = 1L; - private final Identifier variableId; - - public UnboundVariable(final Identifier variableId) { - this.variableId = variableId; - } - - public Identifier getVariableId() { - return this.variableId; - } - - @java.lang.Override - public java.lang.String toString() { - return "UnboundVariable(variableId=" + this.getVariableId() + ")"; - } - - @java.lang.Override - public boolean equals(final java.lang.Object o) { - if (o == this) return true; - if (!(o instanceof UnboundVariable)) return false; - final UnboundVariable other = (UnboundVariable)o; - if (!other.canEqual((java.lang.Object)this)) return false; - final java.lang.Object this$variableId = this.getVariableId(); - final java.lang.Object other$variableId = other.getVariableId(); - if (this$variableId == null ? other$variableId != null : !this$variableId.equals(other$variableId)) return false; - return true; - } - - protected boolean canEqual(final java.lang.Object other) { - return other instanceof UnboundVariable; - } - - @java.lang.Override - public int hashCode() { - final int PRIME = 59; - int result = 1; - final java.lang.Object $variableId = this.getVariableId(); - result = result * PRIME + ($variableId == null ? 43 : $variableId.hashCode()); - return result; - } -} \ No newline at end of file diff --git a/src/main/java/org/zwobble/couscous/interpreter/UnexpectedValueType.java b/src/main/java/org/zwobble/couscous/interpreter/UnexpectedValueType.java deleted file mode 100644 index 2b40728..0000000 --- a/src/main/java/org/zwobble/couscous/interpreter/UnexpectedValueType.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.zwobble.couscous.interpreter; - -import org.zwobble.couscous.ast.TypeName; - -public final class UnexpectedValueType extends InterpreterException { - private static final long serialVersionUID = 1L; - private final TypeName expected; - private final TypeName actual; - - public UnexpectedValueType(final TypeName expected, final TypeName actual) { - this.expected = expected; - this.actual = actual; - } - - public TypeName getExpected() { - return this.expected; - } - - public TypeName getActual() { - return this.actual; - } - - @java.lang.Override - public java.lang.String toString() { - return "UnexpectedValueType(expected=" + this.getExpected() + ", actual=" + this.getActual() + ")"; - } - - @java.lang.Override - public boolean equals(final java.lang.Object o) { - if (o == this) return true; - if (!(o instanceof UnexpectedValueType)) return false; - final UnexpectedValueType other = (UnexpectedValueType)o; - if (!other.canEqual((java.lang.Object)this)) return false; - final java.lang.Object this$expected = this.getExpected(); - final java.lang.Object other$expected = other.getExpected(); - if (this$expected == null ? other$expected != null : !this$expected.equals(other$expected)) return false; - final java.lang.Object this$actual = this.getActual(); - final java.lang.Object other$actual = other.getActual(); - if (this$actual == null ? other$actual != null : !this$actual.equals(other$actual)) return false; - return true; - } - - protected boolean canEqual(final java.lang.Object other) { - return other instanceof UnexpectedValueType; - } - - @java.lang.Override - public int hashCode() { - final int PRIME = 59; - int result = 1; - final java.lang.Object $expected = this.getExpected(); - result = result * PRIME + ($expected == null ? 43 : $expected.hashCode()); - final java.lang.Object $actual = this.getActual(); - result = result * PRIME + ($actual == null ? 43 : $actual.hashCode()); - return result; - } -} \ No newline at end of file diff --git a/src/main/java/org/zwobble/couscous/interpreter/VariableNotInScope.java b/src/main/java/org/zwobble/couscous/interpreter/VariableNotInScope.java deleted file mode 100644 index c5a425e..0000000 --- a/src/main/java/org/zwobble/couscous/interpreter/VariableNotInScope.java +++ /dev/null @@ -1,46 +0,0 @@ -package org.zwobble.couscous.interpreter; - -import org.zwobble.couscous.ast.identifiers.Identifier; - -public final class VariableNotInScope extends InterpreterException { - private static final long serialVersionUID = 1L; - private final Identifier variableId; - - public VariableNotInScope(final Identifier variableId) { - this.variableId = variableId; - } - - public Identifier getVariableId() { - return this.variableId; - } - - @java.lang.Override - public java.lang.String toString() { - return "VariableNotInScope(variableId=" + this.getVariableId() + ")"; - } - - @java.lang.Override - public boolean equals(final java.lang.Object o) { - if (o == this) return true; - if (!(o instanceof VariableNotInScope)) return false; - final VariableNotInScope other = (VariableNotInScope)o; - if (!other.canEqual((java.lang.Object)this)) return false; - final java.lang.Object this$variableId = this.getVariableId(); - final java.lang.Object other$variableId = other.getVariableId(); - if (this$variableId == null ? other$variableId != null : !this$variableId.equals(other$variableId)) return false; - return true; - } - - protected boolean canEqual(final java.lang.Object other) { - return other instanceof VariableNotInScope; - } - - @java.lang.Override - public int hashCode() { - final int PRIME = 59; - int result = 1; - final java.lang.Object $variableId = this.getVariableId(); - result = result * PRIME + ($variableId == null ? 43 : $variableId.hashCode()); - return result; - } -} \ No newline at end of file diff --git a/src/main/java/org/zwobble/couscous/interpreter/WrongNumberOfArguments.java b/src/main/java/org/zwobble/couscous/interpreter/WrongNumberOfArguments.java deleted file mode 100644 index 800aabb..0000000 --- a/src/main/java/org/zwobble/couscous/interpreter/WrongNumberOfArguments.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.zwobble.couscous.interpreter; - -public final class WrongNumberOfArguments extends InterpreterException { - private static final long serialVersionUID = 1L; - private final int expected; - private final int actual; - - public WrongNumberOfArguments(final int expected, final int actual) { - this.expected = expected; - this.actual = actual; - } - - public int getExpected() { - return this.expected; - } - - public int getActual() { - return this.actual; - } - - @java.lang.Override - public java.lang.String toString() { - return "WrongNumberOfArguments(expected=" + this.getExpected() + ", actual=" + this.getActual() + ")"; - } - - @java.lang.Override - public boolean equals(final java.lang.Object o) { - if (o == this) return true; - if (!(o instanceof WrongNumberOfArguments)) return false; - final WrongNumberOfArguments other = (WrongNumberOfArguments)o; - if (!other.canEqual((java.lang.Object)this)) return false; - if (this.getExpected() != other.getExpected()) return false; - if (this.getActual() != other.getActual()) return false; - return true; - } - - protected boolean canEqual(final java.lang.Object other) { - return other instanceof WrongNumberOfArguments; - } - - @java.lang.Override - public int hashCode() { - final int PRIME = 59; - int result = 1; - result = result * PRIME + this.getExpected(); - result = result * PRIME + this.getActual(); - return result; - } -} \ No newline at end of file diff --git a/src/main/java/org/zwobble/couscous/interpreter/errors/ConditionMustBeBoolean.java b/src/main/java/org/zwobble/couscous/interpreter/errors/ConditionMustBeBoolean.java new file mode 100644 index 0000000..3d1ad93 --- /dev/null +++ b/src/main/java/org/zwobble/couscous/interpreter/errors/ConditionMustBeBoolean.java @@ -0,0 +1,46 @@ +package org.zwobble.couscous.interpreter.errors; + +import org.zwobble.couscous.interpreter.values.InterpreterValue; + +public final class ConditionMustBeBoolean extends InterpreterException { + private static final long serialVersionUID = 1L; + private final InterpreterValue actual; + + public ConditionMustBeBoolean(final InterpreterValue actual) { + this.actual = actual; + } + + public InterpreterValue getActual() { + return this.actual; + } + + @java.lang.Override + public java.lang.String toString() { + return "ConditionMustBeBoolean(actual=" + this.getActual() + ")"; + } + + @java.lang.Override + public boolean equals(final java.lang.Object o) { + if (o == this) return true; + if (!(o instanceof ConditionMustBeBoolean)) return false; + final ConditionMustBeBoolean other = (ConditionMustBeBoolean)o; + if (!other.canEqual((java.lang.Object)this)) return false; + final java.lang.Object this$actual = this.getActual(); + final java.lang.Object other$actual = other.getActual(); + if (this$actual == null ? other$actual != null : !this$actual.equals(other$actual)) return false; + return true; + } + + protected boolean canEqual(final java.lang.Object other) { + return other instanceof ConditionMustBeBoolean; + } + + @java.lang.Override + public int hashCode() { + final int PRIME = 59; + int result = 1; + final java.lang.Object $actual = this.getActual(); + result = result * PRIME + ($actual == null ? 43 : $actual.hashCode()); + return result; + } +} \ No newline at end of file diff --git a/src/main/java/org/zwobble/couscous/interpreter/errors/InterpreterException.java b/src/main/java/org/zwobble/couscous/interpreter/errors/InterpreterException.java new file mode 100644 index 0000000..0846437 --- /dev/null +++ b/src/main/java/org/zwobble/couscous/interpreter/errors/InterpreterException.java @@ -0,0 +1,6 @@ +package org.zwobble.couscous.interpreter.errors; + +public class InterpreterException extends RuntimeException { + private static final long serialVersionUID = 1L; + +} diff --git a/src/main/java/org/zwobble/couscous/interpreter/errors/InvalidCast.java b/src/main/java/org/zwobble/couscous/interpreter/errors/InvalidCast.java new file mode 100644 index 0000000..241f8ed --- /dev/null +++ b/src/main/java/org/zwobble/couscous/interpreter/errors/InvalidCast.java @@ -0,0 +1,22 @@ +package org.zwobble.couscous.interpreter.errors; + +import org.zwobble.couscous.ast.TypeName; + +public class InvalidCast extends RuntimeException { + private final TypeName expected; + private final TypeName actual; + + public InvalidCast(TypeName expected, TypeName actual) { + + this.expected = expected; + this.actual = actual; + } + + public TypeName getExpected() { + return expected; + } + + public TypeName getActual() { + return actual; + } +} diff --git a/src/main/java/org/zwobble/couscous/interpreter/errors/NoSuchField.java b/src/main/java/org/zwobble/couscous/interpreter/errors/NoSuchField.java new file mode 100644 index 0000000..e42bdfb --- /dev/null +++ b/src/main/java/org/zwobble/couscous/interpreter/errors/NoSuchField.java @@ -0,0 +1,43 @@ +package org.zwobble.couscous.interpreter.errors; + +public final class NoSuchField extends InterpreterException { + private static final long serialVersionUID = 1L; + private final String fieldName; + + public NoSuchField(final String fieldName) { + this.fieldName = fieldName; + } + + public String getFieldName() { + return this.fieldName; + } + + public java.lang.String toString() { + return "NoSuchField(fieldName=" + this.getFieldName() + ")"; + } + + @java.lang.Override + public boolean equals(final java.lang.Object o) { + if (o == this) return true; + if (!(o instanceof NoSuchField)) return false; + final NoSuchField other = (NoSuchField)o; + if (!other.canEqual((java.lang.Object)this)) return false; + final java.lang.Object this$fieldName = this.getFieldName(); + final java.lang.Object other$fieldName = other.getFieldName(); + if (this$fieldName == null ? other$fieldName != null : !this$fieldName.equals(other$fieldName)) return false; + return true; + } + + protected boolean canEqual(final java.lang.Object other) { + return other instanceof NoSuchField; + } + + @java.lang.Override + public int hashCode() { + final int PRIME = 59; + int result = 1; + final java.lang.Object $fieldName = this.getFieldName(); + result = result * PRIME + ($fieldName == null ? 43 : $fieldName.hashCode()); + return result; + } +} \ No newline at end of file diff --git a/src/main/java/org/zwobble/couscous/interpreter/errors/NoSuchMethod.java b/src/main/java/org/zwobble/couscous/interpreter/errors/NoSuchMethod.java new file mode 100644 index 0000000..8da7d27 --- /dev/null +++ b/src/main/java/org/zwobble/couscous/interpreter/errors/NoSuchMethod.java @@ -0,0 +1,23 @@ +package org.zwobble.couscous.interpreter.errors; + +import org.zwobble.couscous.ast.MethodSignature; + +public final class NoSuchMethod extends InterpreterException { + private static final long serialVersionUID = 1L; + private MethodSignature signature; + + public NoSuchMethod(MethodSignature signature) { + this.signature = signature; + } + + public MethodSignature getSignature() { + return signature; + } + + @Override + public String toString() { + return "NoSuchMethod(" + + "signature=" + signature + + ") " + super.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/org/zwobble/couscous/interpreter/errors/UnboundField.java b/src/main/java/org/zwobble/couscous/interpreter/errors/UnboundField.java new file mode 100644 index 0000000..4769990 --- /dev/null +++ b/src/main/java/org/zwobble/couscous/interpreter/errors/UnboundField.java @@ -0,0 +1,44 @@ +package org.zwobble.couscous.interpreter.errors; + +public final class UnboundField extends InterpreterException { + private static final long serialVersionUID = 1L; + private final String fieldName; + + public UnboundField(final String fieldName) { + this.fieldName = fieldName; + } + + public String getFieldName() { + return this.fieldName; + } + + @java.lang.Override + public java.lang.String toString() { + return "UnboundField(fieldName=" + this.getFieldName() + ")"; + } + + @java.lang.Override + public boolean equals(final java.lang.Object o) { + if (o == this) return true; + if (!(o instanceof UnboundField)) return false; + final UnboundField other = (UnboundField)o; + if (!other.canEqual((java.lang.Object)this)) return false; + final java.lang.Object this$fieldName = this.getFieldName(); + final java.lang.Object other$fieldName = other.getFieldName(); + if (this$fieldName == null ? other$fieldName != null : !this$fieldName.equals(other$fieldName)) return false; + return true; + } + + protected boolean canEqual(final java.lang.Object other) { + return other instanceof UnboundField; + } + + @java.lang.Override + public int hashCode() { + final int PRIME = 59; + int result = 1; + final java.lang.Object $fieldName = this.getFieldName(); + result = result * PRIME + ($fieldName == null ? 43 : $fieldName.hashCode()); + return result; + } +} \ No newline at end of file diff --git a/src/main/java/org/zwobble/couscous/interpreter/errors/UnboundVariable.java b/src/main/java/org/zwobble/couscous/interpreter/errors/UnboundVariable.java new file mode 100644 index 0000000..cce5ca3 --- /dev/null +++ b/src/main/java/org/zwobble/couscous/interpreter/errors/UnboundVariable.java @@ -0,0 +1,46 @@ +package org.zwobble.couscous.interpreter.errors; + +import org.zwobble.couscous.ast.identifiers.Identifier; + +public final class UnboundVariable extends InterpreterException { + private static final long serialVersionUID = 1L; + private final Identifier variableId; + + public UnboundVariable(final Identifier variableId) { + this.variableId = variableId; + } + + public Identifier getVariableId() { + return this.variableId; + } + + @java.lang.Override + public java.lang.String toString() { + return "UnboundVariable(variableId=" + this.getVariableId() + ")"; + } + + @java.lang.Override + public boolean equals(final java.lang.Object o) { + if (o == this) return true; + if (!(o instanceof UnboundVariable)) return false; + final UnboundVariable other = (UnboundVariable)o; + if (!other.canEqual((java.lang.Object)this)) return false; + final java.lang.Object this$variableId = this.getVariableId(); + final java.lang.Object other$variableId = other.getVariableId(); + if (this$variableId == null ? other$variableId != null : !this$variableId.equals(other$variableId)) return false; + return true; + } + + protected boolean canEqual(final java.lang.Object other) { + return other instanceof UnboundVariable; + } + + @java.lang.Override + public int hashCode() { + final int PRIME = 59; + int result = 1; + final java.lang.Object $variableId = this.getVariableId(); + result = result * PRIME + ($variableId == null ? 43 : $variableId.hashCode()); + return result; + } +} \ No newline at end of file diff --git a/src/main/java/org/zwobble/couscous/interpreter/errors/UnexpectedValueType.java b/src/main/java/org/zwobble/couscous/interpreter/errors/UnexpectedValueType.java new file mode 100644 index 0000000..ca40c7c --- /dev/null +++ b/src/main/java/org/zwobble/couscous/interpreter/errors/UnexpectedValueType.java @@ -0,0 +1,57 @@ +package org.zwobble.couscous.interpreter.errors; + +import org.zwobble.couscous.ast.TypeName; + +public final class UnexpectedValueType extends InterpreterException { + private static final long serialVersionUID = 1L; + private final TypeName expected; + private final TypeName actual; + + public UnexpectedValueType(final TypeName expected, final TypeName actual) { + this.expected = expected; + this.actual = actual; + } + + public TypeName getExpected() { + return this.expected; + } + + public TypeName getActual() { + return this.actual; + } + + @java.lang.Override + public java.lang.String toString() { + return "UnexpectedValueType(expected=" + this.getExpected() + ", actual=" + this.getActual() + ")"; + } + + @java.lang.Override + public boolean equals(final java.lang.Object o) { + if (o == this) return true; + if (!(o instanceof UnexpectedValueType)) return false; + final UnexpectedValueType other = (UnexpectedValueType)o; + if (!other.canEqual((java.lang.Object)this)) return false; + final java.lang.Object this$expected = this.getExpected(); + final java.lang.Object other$expected = other.getExpected(); + if (this$expected == null ? other$expected != null : !this$expected.equals(other$expected)) return false; + final java.lang.Object this$actual = this.getActual(); + final java.lang.Object other$actual = other.getActual(); + if (this$actual == null ? other$actual != null : !this$actual.equals(other$actual)) return false; + return true; + } + + protected boolean canEqual(final java.lang.Object other) { + return other instanceof UnexpectedValueType; + } + + @java.lang.Override + public int hashCode() { + final int PRIME = 59; + int result = 1; + final java.lang.Object $expected = this.getExpected(); + result = result * PRIME + ($expected == null ? 43 : $expected.hashCode()); + final java.lang.Object $actual = this.getActual(); + result = result * PRIME + ($actual == null ? 43 : $actual.hashCode()); + return result; + } +} \ No newline at end of file diff --git a/src/main/java/org/zwobble/couscous/interpreter/errors/VariableNotInScope.java b/src/main/java/org/zwobble/couscous/interpreter/errors/VariableNotInScope.java new file mode 100644 index 0000000..8e7c2d4 --- /dev/null +++ b/src/main/java/org/zwobble/couscous/interpreter/errors/VariableNotInScope.java @@ -0,0 +1,46 @@ +package org.zwobble.couscous.interpreter.errors; + +import org.zwobble.couscous.ast.identifiers.Identifier; + +public final class VariableNotInScope extends InterpreterException { + private static final long serialVersionUID = 1L; + private final Identifier variableId; + + public VariableNotInScope(final Identifier variableId) { + this.variableId = variableId; + } + + public Identifier getVariableId() { + return this.variableId; + } + + @java.lang.Override + public java.lang.String toString() { + return "VariableNotInScope(variableId=" + this.getVariableId() + ")"; + } + + @java.lang.Override + public boolean equals(final java.lang.Object o) { + if (o == this) return true; + if (!(o instanceof VariableNotInScope)) return false; + final VariableNotInScope other = (VariableNotInScope)o; + if (!other.canEqual((java.lang.Object)this)) return false; + final java.lang.Object this$variableId = this.getVariableId(); + final java.lang.Object other$variableId = other.getVariableId(); + if (this$variableId == null ? other$variableId != null : !this$variableId.equals(other$variableId)) return false; + return true; + } + + protected boolean canEqual(final java.lang.Object other) { + return other instanceof VariableNotInScope; + } + + @java.lang.Override + public int hashCode() { + final int PRIME = 59; + int result = 1; + final java.lang.Object $variableId = this.getVariableId(); + result = result * PRIME + ($variableId == null ? 43 : $variableId.hashCode()); + return result; + } +} \ No newline at end of file diff --git a/src/main/java/org/zwobble/couscous/interpreter/errors/WrongNumberOfArguments.java b/src/main/java/org/zwobble/couscous/interpreter/errors/WrongNumberOfArguments.java new file mode 100644 index 0000000..90078e8 --- /dev/null +++ b/src/main/java/org/zwobble/couscous/interpreter/errors/WrongNumberOfArguments.java @@ -0,0 +1,49 @@ +package org.zwobble.couscous.interpreter.errors; + +public final class WrongNumberOfArguments extends InterpreterException { + private static final long serialVersionUID = 1L; + private final int expected; + private final int actual; + + public WrongNumberOfArguments(final int expected, final int actual) { + this.expected = expected; + this.actual = actual; + } + + public int getExpected() { + return this.expected; + } + + public int getActual() { + return this.actual; + } + + @java.lang.Override + public java.lang.String toString() { + return "WrongNumberOfArguments(expected=" + this.getExpected() + ", actual=" + this.getActual() + ")"; + } + + @java.lang.Override + public boolean equals(final java.lang.Object o) { + if (o == this) return true; + if (!(o instanceof WrongNumberOfArguments)) return false; + final WrongNumberOfArguments other = (WrongNumberOfArguments)o; + if (!other.canEqual((java.lang.Object)this)) return false; + if (this.getExpected() != other.getExpected()) return false; + if (this.getActual() != other.getActual()) return false; + return true; + } + + protected boolean canEqual(final java.lang.Object other) { + return other instanceof WrongNumberOfArguments; + } + + @java.lang.Override + public int hashCode() { + final int PRIME = 59; + int result = 1; + result = result * PRIME + this.getExpected(); + result = result * PRIME + this.getActual(); + return result; + } +} \ No newline at end of file diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/BooleanInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/BooleanInterpreterValue.java index 032caff..023f684 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/BooleanInterpreterValue.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/BooleanInterpreterValue.java @@ -1,7 +1,7 @@ package org.zwobble.couscous.interpreter.values; import org.zwobble.couscous.ast.Operator; -import org.zwobble.couscous.interpreter.NoSuchField; +import org.zwobble.couscous.interpreter.errors.NoSuchField; import org.zwobble.couscous.values.BooleanValue; import org.zwobble.couscous.values.PrimitiveValue; import org.zwobble.couscous.values.PrimitiveValues; diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/ConcreteType.java b/src/main/java/org/zwobble/couscous/interpreter/values/ConcreteType.java index b3f9eb1..9a9fde8 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/ConcreteType.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/ConcreteType.java @@ -6,6 +6,8 @@ import org.zwobble.couscous.ast.FormalArgumentNode; import org.zwobble.couscous.ast.MethodSignature; import org.zwobble.couscous.ast.TypeName; import org.zwobble.couscous.interpreter.*; +import org.zwobble.couscous.interpreter.errors.NoSuchMethod; +import org.zwobble.couscous.interpreter.errors.WrongNumberOfArguments; import org.zwobble.couscous.util.Casts; import java.util.*; diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java index 5cc14de..3056e2c 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java @@ -5,6 +5,7 @@ import java.util.function.BiFunction; import org.zwobble.couscous.ast.Operator; import org.zwobble.couscous.interpreter.*; +import org.zwobble.couscous.interpreter.errors.NoSuchField; import org.zwobble.couscous.values.IntegerValue; import org.zwobble.couscous.values.ObjectValues; import org.zwobble.couscous.values.PrimitiveValue; diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/ObjectInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/ObjectInterpreterValue.java index bebd5f7..566ff80 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/ObjectInterpreterValue.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/ObjectInterpreterValue.java @@ -4,8 +4,8 @@ import java.util.HashMap; import java.util.Map; import java.util.Optional; import org.zwobble.couscous.interpreter.InterpreterTypes; -import org.zwobble.couscous.interpreter.NoSuchField; -import org.zwobble.couscous.interpreter.UnboundField; +import org.zwobble.couscous.interpreter.errors.NoSuchField; +import org.zwobble.couscous.interpreter.errors.UnboundField; import org.zwobble.couscous.values.PrimitiveValue; public class ObjectInterpreterValue implements InterpreterValue { diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/StringInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/StringInterpreterValue.java index ff2617e..f86b343 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/StringInterpreterValue.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/StringInterpreterValue.java @@ -1,6 +1,6 @@ package org.zwobble.couscous.interpreter.values; -import org.zwobble.couscous.interpreter.NoSuchField; +import org.zwobble.couscous.interpreter.errors.NoSuchField; import org.zwobble.couscous.values.*; import java.util.Optional; diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/TypeInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/TypeInterpreterValue.java index 97cf6ec..5938ce3 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/TypeInterpreterValue.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/TypeInterpreterValue.java @@ -1,7 +1,7 @@ package org.zwobble.couscous.interpreter.values; import org.zwobble.couscous.ast.TypeName; -import org.zwobble.couscous.interpreter.NoSuchField; +import org.zwobble.couscous.interpreter.errors.NoSuchField; import org.zwobble.couscous.values.ObjectValues; import org.zwobble.couscous.values.PrimitiveValue; import org.zwobble.couscous.values.PrimitiveValues; diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/UnitInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/UnitInterpreterValue.java index 2d4ef9c..54f5605 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/UnitInterpreterValue.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/UnitInterpreterValue.java @@ -1,7 +1,7 @@ package org.zwobble.couscous.interpreter.values; import java.util.Optional; -import org.zwobble.couscous.interpreter.NoSuchField; +import org.zwobble.couscous.interpreter.errors.NoSuchField; import org.zwobble.couscous.values.PrimitiveValue; import org.zwobble.couscous.values.PrimitiveValues; -- cgit v1.2.3