aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-04-03 10:44:34 +0100
committerMichael Williamson <mike@zwobble.org>2016-04-03 10:44:34 +0100
commitb6ed1339fa3e469b80d4c15d44ff146db5922294 (patch)
tree6223714f4f760e0b99dabcd09c89e2c3186b3c03 /src/main/java/org/zwobble
parentc6f690724da284c8065319252bf79eb166a168c8 (diff)
Improve generic type handling
Diffstat (limited to 'src/main/java/org/zwobble')
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java25
1 files changed, 12 insertions, 13 deletions
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 dcb3eb9..9bf27d9 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java
@@ -39,21 +39,20 @@ public class JavaTypes {
return Types.array(typeOf(typeBinding.getElementType()));
}
ITypeBinding outerClass = typeBinding.getDeclaringClass();
- if (outerClass == null) {
- ScalarType rawType = ScalarType.of(typeBinding.getErasure().getQualifiedName());
- if (typeBinding.isParameterizedType()) {
- List<Type> typeParameters = eagerMap(
- asList(typeBinding.getTypeArguments()),
- JavaTypes::typeOf);
- return new ParameterizedType(rawType, typeParameters);
- } else {
- return rawType;
- }
- } else if (typeBinding.isTypeVariable()) {
+ if (typeBinding.isTypeVariable() && outerClass != null) {
return new TypeParameter(erasure(typeOf(outerClass)), typeBinding.getName());
- } else {
+ }
+ ScalarType rawType = outerClass == null
+ ? ScalarType.of(typeBinding.getErasure().getQualifiedName())
// TODO: test for erasure of inner type name
- return ScalarType.of(erasure(typeOf(outerClass)).getQualifiedName() + "__" + typeBinding.getErasure().getName());
+ : ScalarType.of(erasure(typeOf(outerClass)).getQualifiedName() + "__" + typeBinding.getErasure().getName());
+ if (typeBinding.isParameterizedType()) {
+ List<Type> typeParameters = eagerMap(
+ asList(typeBinding.getTypeArguments()),
+ JavaTypes::typeOf);
+ return new ParameterizedType(rawType, typeParameters);
+ } else {
+ return rawType;
}
}