summaryrefslogtreecommitdiffstats
path: root/weaver/src
diff options
context:
space:
mode:
authoraclement <aclement>2008-06-18 17:18:51 +0000
committeraclement <aclement>2008-06-18 17:18:51 +0000
commit21850ffb157cae71d570c17483bbceb197a7ceae (patch)
tree70c561d0584f88d06cd3995f9c25ecb66e12a2c4 /weaver/src
parentbac3b32d76b6556bb1ec7cbab3126c0126c9e7cd (diff)
downloadaspectj-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.java25
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);
+ }
}