aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/ast/MethodSignature.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-04-05 22:51:25 +0100
committerMichael Williamson <mike@zwobble.org>2016-04-05 22:51:25 +0100
commit8fe29f6add04fb9c2dbc3ad1d13d582787aa6e88 (patch)
treeddfaa3d0dd651e2ad26def00119773529677d8b7 /src/main/java/org/zwobble/couscous/ast/MethodSignature.java
parent63fc003231e92e8f5ea2af29a04ba5507c212325 (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.java20
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;