aboutsummaryrefslogtreecommitdiffstats
path: root/weaver
diff options
context:
space:
mode:
authoraclement <aclement>2005-05-06 15:18:54 +0000
committeraclement <aclement>2005-05-06 15:18:54 +0000
commit952dda914064ff58a39fc682d18cdbf3ad171475 (patch)
treee68ecb5cefb0d4352fdc9bddd5e329974011b19f /weaver
parent7389d9fc0252b90a9b0bf2cb1861a0f3802ad320 (diff)
downloadaspectj-952dda914064ff58a39fc682d18cdbf3ad171475.tar.gz
aspectj-952dda914064ff58a39fc682d18cdbf3ad171475.zip
Fix for 91053 (Generics): Generics problem with Set
Diffstat (limited to 'weaver')
-rw-r--r--weaver/src/org/aspectj/weaver/TypeX.java26
-rw-r--r--weaver/src/org/aspectj/weaver/World.java2
2 files changed, 24 insertions, 4 deletions
diff --git a/weaver/src/org/aspectj/weaver/TypeX.java b/weaver/src/org/aspectj/weaver/TypeX.java
index f3f078c37..3f5c1f39e 100644
--- a/weaver/src/org/aspectj/weaver/TypeX.java
+++ b/weaver/src/org/aspectj/weaver/TypeX.java
@@ -28,6 +28,8 @@ public class TypeX implements AnnotatedElement {
* If this is a parameterized type, these are its parameters
*/
protected TypeX[] typeParameters;
+
+ protected boolean isParameterized = false;
/**
* @param signature the bytecode string representation of this Type
@@ -114,6 +116,7 @@ public class TypeX implements AnnotatedElement {
*/
public static TypeX forParameterizedTypeNames(String name, String[] paramTypeNames) {
TypeX ret = TypeX.forName(name);
+ ret.setParameterized(true);
ret.typeParameters = new TypeX[paramTypeNames.length];
for (int i = 0; i < paramTypeNames.length; i++) {
ret.typeParameters[i] = TypeX.forName(paramTypeNames[i]);
@@ -130,6 +133,14 @@ public class TypeX implements AnnotatedElement {
return ret;
}
+ public static TypeX forRawTypeNames(String name) {
+ TypeX ret = TypeX.forName(name);
+ ret.setParameterized(true);
+ // FIXME asc no need to mess up the signature is there?
+ // ret.signature = ret.signature+"#RAW";
+ return ret;
+ }
+
/**
* Creates a new type array with a fresh type appended to the end.
*
@@ -237,7 +248,8 @@ public class TypeX implements AnnotatedElement {
public String getBaseName() {
String name = getName();
if (isParameterized()) {
- return name.substring(0,name.indexOf("<"));
+ if (isRawType()) return name;
+ else return name.substring(0,name.indexOf("<"));
} else {
return name;
}
@@ -292,9 +304,17 @@ public class TypeX implements AnnotatedElement {
* Determines if this represents a parameterized type.
*/
public final boolean isParameterized() {
- return signature.indexOf("<") != -1;
- //(typeParameters != null) && (typeParameters.length > 0);
+ return isParameterized;
+// return signature.indexOf("<") != -1;
+// //(typeParameters != null) && (typeParameters.length > 0);
}
+
+ public final boolean isRawType() {
+ return isParameterized && typeParameters==null;
+ }
+
+ private final void setParameterized(boolean b) { isParameterized=b;}
+
/**
* Returns a TypeX object representing the effective outermost enclosing type
diff --git a/weaver/src/org/aspectj/weaver/World.java b/weaver/src/org/aspectj/weaver/World.java
index 04ec34815..cdcac9fc5 100644
--- a/weaver/src/org/aspectj/weaver/World.java
+++ b/weaver/src/org/aspectj/weaver/World.java
@@ -137,7 +137,7 @@ public abstract class World implements Dump.INode {
dumpState_cantFindTypeExceptions.add(new RuntimeException("Can't find type "+ty.getName()));
}
}
- if (ty.isParameterized()) {
+ if (ty.isParameterized() && !ty.isRawType()) {
for (int i = 0; i < ty.typeParameters.length; i++) {
ty.typeParameters[i] = resolve(ty.typeParameters[i],allowMissing);
}