aboutsummaryrefslogtreecommitdiffstats
path: root/weaver5/java5-src
diff options
context:
space:
mode:
authorAndy Clement <aclement@pivotal.io>2016-12-16 15:46:48 -0800
committerAndy Clement <aclement@pivotal.io>2016-12-16 15:46:48 -0800
commit8e079ecde2315294e16de8304899d19acdd15c36 (patch)
treea5f781170b83da8d68129ffcd721b77019929b00 /weaver5/java5-src
parent3714f91628b7c83e2333895370b7b9a3a160a8a9 (diff)
downloadaspectj-8e079ecde2315294e16de8304899d19acdd15c36.tar.gz
aspectj-8e079ecde2315294e16de8304899d19acdd15c36.zip
509327: Minor fixes to improve the situation, wip
Diffstat (limited to 'weaver5/java5-src')
-rw-r--r--weaver5/java5-src/org/aspectj/weaver/reflect/JavaLangTypeToResolvedTypeConverter.java12
1 files changed, 11 insertions, 1 deletions
diff --git a/weaver5/java5-src/org/aspectj/weaver/reflect/JavaLangTypeToResolvedTypeConverter.java b/weaver5/java5-src/org/aspectj/weaver/reflect/JavaLangTypeToResolvedTypeConverter.java
index 51a9a4e84..41ab968a7 100644
--- a/weaver5/java5-src/org/aspectj/weaver/reflect/JavaLangTypeToResolvedTypeConverter.java
+++ b/weaver5/java5-src/org/aspectj/weaver/reflect/JavaLangTypeToResolvedTypeConverter.java
@@ -66,10 +66,20 @@ public class JavaLangTypeToResolvedTypeConverter {
return getWorld().resolve(name);
}
} else if (type instanceof ParameterizedType) {
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=509327
+ // TODO should deal with the ownerType if it set, indicating this is possibly an inner type of a parameterized type
+// Type ownerType = ((ParameterizedType) type).getOwnerType();
ParameterizedType parameterizedType = (ParameterizedType) type;
ResolvedType baseType = fromType(parameterizedType.getRawType());
- if (!baseType.isRawType()) throw new IllegalStateException("Expected raw type form of "+parameterizedType.getRawType().getTypeName());
Type[] typeArguments = parameterizedType.getActualTypeArguments();
+ if (baseType.isSimpleType() && typeArguments.length == 0) {
+ // 'type' is an inner type of some outer parameterized type
+ // For now just return the base type - in future create the parameterized form of the outer
+ // and use it with the inner. We return the base type to be compatible with what the
+ // code does that accesses the info from the bytecode (unlike this code which accesses it
+ // reflectively).
+ return baseType;
+ }
ResolvedType[] resolvedTypeArguments = fromTypes(typeArguments);
return TypeFactory.createParameterizedType(baseType, resolvedTypeArguments, getWorld());
} else if (type instanceof java.lang.reflect.TypeVariable) {