diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-03-29 14:11:44 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-03-29 14:11:44 +0100 |
| commit | d43cef47e186d11692cb7c8db571ca70487831de (patch) | |
| tree | 8b63515d2846723369ab8148ee83cc27401bf7b9 /src | |
| parent | 8599ab56fa59ec99c4db8b601ca92be0828b06de (diff) | |
Extract bind method to JavaTypes
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/frontends/java/JavaMethods.java | 16 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java | 10 |
2 files changed, 12 insertions, 14 deletions
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaMethods.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaMethods.java index 7b8a004..f803fff 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaMethods.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaMethods.java @@ -4,9 +4,7 @@ import com.google.common.collect.Iterables; import org.eclipse.jdt.core.dom.IMethodBinding; import org.eclipse.jdt.core.dom.ITypeBinding; import org.zwobble.couscous.ast.MethodSignature; -import org.zwobble.couscous.types.BoundTypeParameter; import org.zwobble.couscous.types.Type; -import org.zwobble.couscous.types.TypeParameter; import java.util.List; @@ -34,19 +32,9 @@ class JavaMethods { eagerMap( argumentTypes, asList(erasedMethod.getParameterTypes()), - (argumentType, erasedParameterType) -> typeParameterForGeneric(erasedParameterType, argumentType)), - typeParameterForGeneric(erasedMethod.getReturnType(), returnType)); + (argumentType, erasedParameterType) -> JavaTypes.bind(typeOf(erasedParameterType), argumentType)), + JavaTypes.bind(typeOf(erasedMethod.getReturnType()), returnType)); } } - private static Type typeParameterForGeneric(ITypeBinding erasedTypeBinding, Type type) { - Type erasedType = typeOf(erasedTypeBinding); - if (erasedType.equals(type)) { - return type; - } else if (!(erasedType instanceof TypeParameter)) { - throw new RuntimeException("Type parameter was " + erasedType); - } else { - return new BoundTypeParameter((TypeParameter) typeOf(erasedTypeBinding), type); - } - } } diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java index 7282449..900ffe2 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java @@ -80,4 +80,14 @@ class JavaTypes { .map(JavaTypes::typeOf) .filter(type -> !type.equals(Types.OBJECT)); } + + static Type bind(Type genericType, Type concreteType) { + if (genericType.equals(concreteType)) { + return concreteType; + } else if (!(genericType instanceof TypeParameter)) { + throw new RuntimeException("Type parameter was " + genericType); + } else { + return new BoundTypeParameter((TypeParameter) genericType, concreteType); + } + } } |
