Browse Source

UnresolvedType.signatureToName: fix '*' case for generic type '?'

In generic type lists, after a '*' in any type parameter list, sometimes
the '*' (which should be converted to '?') itself and always the
subsequent parameters would be missing from the signature:

  - '[Pjava/util/Collection<*>;' yielded
    'java.util.Collection<>[]', but should be
    'java.util.Collection<?>[]'

  - '[Pjava/util/Map<*Pjava/util/List<[Ljava/lang/Integer;>;>;' yielded
    'java.util.Map<?>[]', but should be
    'java.util.Map<?,java.util.List<java.lang.Integer[]>>[]'

This is now fixed.

Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
pull/220/head
Alexander Kriegisch 1 year ago
parent
commit
cad9346701

+ 1
- 1
org.aspectj.matcher/src/main/java/org/aspectj/weaver/UnresolvedType.java View File

@@ -676,7 +676,7 @@ public class UnresolvedType implements Traceable, TypeVariableDeclaringElement {
if (paramNestLevel > 0) {
innerBuff.append(c);
}
if (c == ';' && paramNestLevel == 1) {
if ((c == ';' || c == '*') && paramNestLevel == 1) {
nameBuff.append(signatureToName(innerBuff.toString()));
if (signature.charAt(i + 1) != '>') {
nameBuff.append(',');

Loading…
Cancel
Save