diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-04-05 22:51:25 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-04-05 22:51:25 +0100 |
| commit | 8fe29f6add04fb9c2dbc3ad1d13d582787aa6e88 (patch) | |
| tree | ddfaa3d0dd651e2ad26def00119773529677d8b7 /src/main/java/org/zwobble/couscous/ast/MethodSignature.java | |
| parent | 63fc003231e92e8f5ea2af29a04ba5507c212325 (diff) | |
Add MethodTypeParameter
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast/MethodSignature.java')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/ast/MethodSignature.java | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/MethodSignature.java b/src/main/java/org/zwobble/couscous/ast/MethodSignature.java index 715dade..8c907e3 100644 --- a/src/main/java/org/zwobble/couscous/ast/MethodSignature.java +++ b/src/main/java/org/zwobble/couscous/ast/MethodSignature.java @@ -1,23 +1,31 @@ package org.zwobble.couscous.ast; +import org.zwobble.couscous.types.MethodTypeParameter; import org.zwobble.couscous.types.Type; import org.zwobble.couscous.types.Types; import java.util.List; import static org.zwobble.couscous.util.ExtraLists.eagerMap; +import static org.zwobble.couscous.util.ExtraLists.list; public class MethodSignature { public static MethodSignature signature(String name, List<Type> arguments, Type returnType) { - return new MethodSignature(name, arguments, returnType); + return signature(name, list(), arguments, returnType); + } + + public static MethodSignature signature(String name, List<MethodTypeParameter> typeParameters, List<Type> arguments, Type returnType) { + return new MethodSignature(name, typeParameters, arguments, returnType); } private final String name; + private final List<MethodTypeParameter> typeParameters; private final List<Type> arguments; private final Type returnType; - public MethodSignature(String name, List<Type> arguments, Type returnType) { + public MethodSignature(String name, List<MethodTypeParameter> typeParameters, List<Type> arguments, Type returnType) { this.name = name; + this.typeParameters = typeParameters; this.arguments = arguments; this.returnType = returnType; } @@ -26,6 +34,10 @@ public class MethodSignature { return name; } + public List<MethodTypeParameter> getTypeParameters() { + return typeParameters; + } + public List<Type> getArguments() { return arguments; } @@ -37,6 +49,7 @@ public class MethodSignature { public MethodSignature generic() { return new MethodSignature( name, + typeParameters, eagerMap(arguments, Types::generic), Types.generic(returnType)); } @@ -45,6 +58,7 @@ public class MethodSignature { public String toString() { return "MethodSignature(" + "name='" + name + '\'' + + ", typeParameters=" + typeParameters + ", arguments=" + arguments + ", returnType=" + returnType + ')'; @@ -58,6 +72,7 @@ public class MethodSignature { MethodSignature that = (MethodSignature) o; if (!name.equals(that.name)) return false; + if (!typeParameters.equals(that.typeParameters)) return false; if (!arguments.equals(that.arguments)) return false; return returnType.equals(that.returnType); @@ -66,6 +81,7 @@ public class MethodSignature { @Override public int hashCode() { int result = name.hashCode(); + result = 31 * result + typeParameters.hashCode(); result = 31 * result + arguments.hashCode(); result = 31 * result + returnType.hashCode(); return result; |
