diff options
author | aclement <aclement> | 2008-06-18 17:18:51 +0000 |
---|---|---|
committer | aclement <aclement> | 2008-06-18 17:18:51 +0000 |
commit | 21850ffb157cae71d570c17483bbceb197a7ceae (patch) | |
tree | 70c561d0584f88d06cd3995f9c25ecb66e12a2c4 /weaver/src | |
parent | bac3b32d76b6556bb1ec7cbab3126c0126c9e7cd (diff) | |
download | aspectj-21850ffb157cae71d570c17483bbceb197a7ceae.tar.gz aspectj-21850ffb157cae71d570c17483bbceb197a7ceae.zip |
237447: test and fix: nested parameterization
Diffstat (limited to 'weaver/src')
-rw-r--r-- | weaver/src/org/aspectj/weaver/TypeFactory.java | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/weaver/src/org/aspectj/weaver/TypeFactory.java b/weaver/src/org/aspectj/weaver/TypeFactory.java index b314d4001..aeea50c90 100644 --- a/weaver/src/org/aspectj/weaver/TypeFactory.java +++ b/weaver/src/org/aspectj/weaver/TypeFactory.java @@ -14,6 +14,8 @@ package org.aspectj.weaver; import java.util.ArrayList; import java.util.List; +import org.aspectj.asm.internal.CharOperation; + /** * @author colyer * @@ -245,4 +247,27 @@ public class TypeFactory { types.toArray(typeParams); return typeParams; } + + // OPTIMIZE improve all this signature processing stuff, use char arrays, etc + + /** + * Create a signature then delegate to the other factory method. Same input/output: + * baseTypeSignature="LSomeType;" + * arguments[0]= something with sig "Pcom/Foo<Ljava/lang/String;>;" + * signature created = "PSomeType<Pcom/Foo<Ljava/lang/String;>;>;" + */ + public static UnresolvedType createUnresolvedParameterizedType(String baseTypeSignature, UnresolvedType[] arguments) { + StringBuffer parameterizedSig = new StringBuffer(); + parameterizedSig.append(ResolvedType.PARAMETERIZED_TYPE_IDENTIFIER); + parameterizedSig.append(baseTypeSignature.substring(1,baseTypeSignature.length()-1)); + if (arguments.length > 0) { + parameterizedSig.append("<"); + for (int i=0;i<arguments.length;i++) { + parameterizedSig.append(arguments[i].getSignature()); + } + parameterizedSig.append(">"); + } + parameterizedSig.append(";"); + return createUnresolvedParameterizedType(parameterizedSig.toString(),baseTypeSignature,arguments); + } } |