aboutsummaryrefslogtreecommitdiffstats
path: root/weaver
diff options
context:
space:
mode:
authoraclement <aclement>2005-07-11 10:51:05 +0000
committeraclement <aclement>2005-07-11 10:51:05 +0000
commit962f6e7732d88d5590f5167f36f78b66984c136b (patch)
tree9eb524acfe261a22cc13c19c4f1e6f6c21ff0fd5 /weaver
parent52db900e0c3565c9e0692127f6e2c7774dfc1fdc (diff)
downloadaspectj-962f6e7732d88d5590f5167f36f78b66984c136b.tar.gz
aspectj-962f6e7732d88d5590f5167f36f78b66984c136b.zip
generics: improved type resolution, aware of raw/simple/parameterized/generic
Diffstat (limited to 'weaver')
-rw-r--r--weaver/src/org/aspectj/weaver/bcel/BcelWorld.java22
1 files changed, 18 insertions, 4 deletions
diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelWorld.java b/weaver/src/org/aspectj/weaver/bcel/BcelWorld.java
index 71e8eb7cf..7133d824b 100644
--- a/weaver/src/org/aspectj/weaver/bcel/BcelWorld.java
+++ b/weaver/src/org/aspectj/weaver/bcel/BcelWorld.java
@@ -268,14 +268,28 @@ public class BcelWorld extends World implements Repository {
public BcelObjectType addSourceObjectType(JavaClass jc) {
+ BcelObjectType ret = null;
String signature = TypeX.forName(jc.getClassName()).getSignature();
ReferenceType nameTypeX = (ReferenceType)typeMap.get(signature);
- if (nameTypeX == null) {
- nameTypeX = new ReferenceType(signature, this);
+ if (nameTypeX == null) {
+ if (jc.isGeneric()) {
+ nameTypeX = ReferenceType.fromTypeX(TypeX.forRawTypeNames(jc.getClassName()),this);
+ ret = makeBcelObjectType(nameTypeX, jc, true);
+ ReferenceType genericRefType = new ReferenceType(
+ TypeX.forGenericTypeSignature(signature,ret.getDeclaredGenericSignature()),this);
+ nameTypeX.setDelegate(ret);
+ genericRefType.setDelegate(ret);
+ nameTypeX.setGenericType(genericRefType);
+ typeMap.put(signature, nameTypeX);
+ } else {
+ nameTypeX = new ReferenceType(signature, this);
+ ret = makeBcelObjectType(nameTypeX, jc, true);
+ typeMap.put(signature, nameTypeX);
+ }
+ } else {
+ ret = makeBcelObjectType(nameTypeX, jc, true);
}
- BcelObjectType ret = makeBcelObjectType(nameTypeX, jc, true);
- typeMap.put(signature, nameTypeX);
return ret;
}