diff options
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.java | 54 |
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 |
