From a0cb79d556316e0b25c57916582ac6fa64ddadf9 Mon Sep 17 00:00:00 2001 From: aclement Date: Tue, 14 Oct 2008 22:54:28 +0000 Subject: [PATCH] 250632: fix (poor code tho...) --- .../aspectj/weaver/ResolvedMemberImpl.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/weaver/src/org/aspectj/weaver/ResolvedMemberImpl.java b/weaver/src/org/aspectj/weaver/ResolvedMemberImpl.java index 92a1f2de3..2bdd41697 100644 --- a/weaver/src/org/aspectj/weaver/ResolvedMemberImpl.java +++ b/weaver/src/org/aspectj/weaver/ResolvedMemberImpl.java @@ -814,11 +814,24 @@ public class ResolvedMemberImpl extends MemberImpl implements IHasPosition, Anno // The component type might be a type variable (pr150095) int dims = 1; String sig = aType.getSignature(); - while (sig.charAt(dims) == '[') - dims++; + // while (sig.charAt(dims) == '[') + // dims++; + UnresolvedType arrayType = null; UnresolvedType componentSig = UnresolvedType.forSignature(sig.substring(dims)); - UnresolvedType arrayType = ResolvedType.makeArray(parameterize(componentSig, typeVariableMap, inParameterizedType), - dims); + UnresolvedType parameterizedComponentSig = parameterize(componentSig, typeVariableMap, inParameterizedType); + if (parameterizedComponentSig.isTypeVariableReference() + && parameterizedComponentSig instanceof UnresolvedTypeVariableReferenceType + && typeVariableMap.containsKey(((UnresolvedTypeVariableReferenceType) parameterizedComponentSig) + .getTypeVariable().getName())) { // pr250632 + // TODO ASC bah, this code is rubbish - i should fix it properly + StringBuffer newsig = new StringBuffer(); + newsig.append("[T"); + newsig.append(((UnresolvedTypeVariableReferenceType) parameterizedComponentSig).getTypeVariable().getName()); + newsig.append(";"); + arrayType = UnresolvedType.forSignature(newsig.toString()); + } else { + arrayType = ResolvedType.makeArray(parameterizedComponentSig, dims); + } return arrayType; } return aType; -- 2.39.5