aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/interpreter/values/MethodValue.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/zwobble/couscous/interpreter/values/MethodValue.java')
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/MethodValue.java54
1 files changed, 43 insertions, 11 deletions
diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/MethodValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/MethodValue.java
index b5068fc..81964fb 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/values/MethodValue.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/values/MethodValue.java
@@ -2,21 +2,53 @@ package org.zwobble.couscous.interpreter.values;
import java.util.List;
import java.util.function.BiFunction;
-
import org.zwobble.couscous.ast.TypeName;
import org.zwobble.couscous.interpreter.Environment;
-import lombok.AccessLevel;
-import lombok.Getter;
-import lombok.Value;
-
-@Value
-public class MethodValue implements Callable {
- List<TypeName> argumentTypes;
- @Getter(value=AccessLevel.NONE)
- BiFunction<Environment, MethodCallArguments<InterpreterValue>, InterpreterValue> apply;
+public final class MethodValue implements Callable {
+ private final List<TypeName> argumentTypes;
+ private final BiFunction<Environment, MethodCallArguments<InterpreterValue>, InterpreterValue> apply;
public InterpreterValue apply(Environment environment, MethodCallArguments<InterpreterValue> arguments) {
return apply.apply(environment, arguments);
}
-}
+
+ public MethodValue(final List<TypeName> argumentTypes, final BiFunction<Environment, MethodCallArguments<InterpreterValue>, InterpreterValue> apply) {
+ this.argumentTypes = argumentTypes;
+ this.apply = apply;
+ }
+
+ public List<TypeName> getArgumentTypes() {
+ return this.argumentTypes;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object o) {
+ if (o == this) return true;
+ if (!(o instanceof MethodValue)) return false;
+ final MethodValue other = (MethodValue)o;
+ final java.lang.Object this$argumentTypes = this.getArgumentTypes();
+ final java.lang.Object other$argumentTypes = other.getArgumentTypes();
+ if (this$argumentTypes == null ? other$argumentTypes != null : !this$argumentTypes.equals(other$argumentTypes)) return false;
+ final java.lang.Object this$apply = this.apply;
+ final java.lang.Object other$apply = other.apply;
+ if (this$apply == null ? other$apply != null : !this$apply.equals(other$apply)) return false;
+ return true;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ final java.lang.Object $argumentTypes = this.getArgumentTypes();
+ result = result * PRIME + ($argumentTypes == null ? 43 : $argumentTypes.hashCode());
+ final java.lang.Object $apply = this.apply;
+ result = result * PRIME + ($apply == null ? 43 : $apply.hashCode());
+ return result;
+ }
+
+ @java.lang.Override
+ public java.lang.String toString() {
+ return "MethodValue(argumentTypes=" + this.getArgumentTypes() + ", apply=" + this.apply + ")";
+ }
+} \ No newline at end of file