diff options
author | Andy Clement <aclement@pivotal.io> | 2016-12-16 15:46:48 -0800 |
---|---|---|
committer | Andy Clement <aclement@pivotal.io> | 2016-12-16 15:46:48 -0800 |
commit | 8e079ecde2315294e16de8304899d19acdd15c36 (patch) | |
tree | a5f781170b83da8d68129ffcd721b77019929b00 /weaver5/java5-src | |
parent | 3714f91628b7c83e2333895370b7b9a3a160a8a9 (diff) | |
download | aspectj-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.java | 12 |
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) { |