From b6ed1339fa3e469b80d4c15d44ff146db5922294 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 3 Apr 2016 10:44:34 +0100 Subject: Improve generic type handling --- .../zwobble/couscous/frontends/java/JavaTypes.java | 25 +++++++++++----------- 1 file changed, 12 insertions(+), 13 deletions(-) (limited to 'src/main/java') 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 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 typeParameters = eagerMap( + asList(typeBinding.getTypeArguments()), + JavaTypes::typeOf); + return new ParameterizedType(rawType, typeParameters); + } else { + return rawType; } } -- cgit v1.2.3