aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoracolyer <acolyer>2005-07-13 13:04:03 +0000
committeracolyer <acolyer>2005-07-13 13:04:03 +0000
commitd9e3ba17c87310d66f0cf796e15f58413afb34f7 (patch)
tree303f643ff1dd78b82ca88b2345ebdb24e3fbd765
parentd3a1396362fef8107a5e3529530bc523c1c15903 (diff)
downloadaspectj-d9e3ba17c87310d66f0cf796e15f58413afb34f7.tar.gz
aspectj-d9e3ba17c87310d66f0cf796e15f58413afb34f7.zip
avoid losing type variable information when resolving bindings
-rw-r--r--weaver/src/org/aspectj/weaver/patterns/WildTypePattern.java8
1 files changed, 6 insertions, 2 deletions
diff --git a/weaver/src/org/aspectj/weaver/patterns/WildTypePattern.java b/weaver/src/org/aspectj/weaver/patterns/WildTypePattern.java
index 436103277..8f67b4466 100644
--- a/weaver/src/org/aspectj/weaver/patterns/WildTypePattern.java
+++ b/weaver/src/org/aspectj/weaver/patterns/WildTypePattern.java
@@ -519,8 +519,12 @@ public class WildTypePattern extends TypePattern {
// Only if the type is exact *and* the type parameters are exact should we create an
// ExactTypePattern for this WildTypePattern
if (typeParameters.areAllExact()) {
- String[] typeParamCleanNames = typeParameters.maybeGetCleanNames();
- TypeX tx = TypeX.forParameterizedTypeNames(rawType.getName(),typeParamCleanNames);
+ TypePattern[] typePats = typeParameters.getTypePatterns();
+ TypeX[] typeParameterTypes = new TypeX[typePats.length];
+ for (int i = 0; i < typeParameterTypes.length; i++) {
+ typeParameterTypes[i] = ((ExactTypePattern)typePats[i]).getExactType();
+ }
+ TypeX tx = TypeX.forParameterizedTypes(rawType,typeParameterTypes);
TypeX type = scope.getWorld().resolve(tx,true);
if (dim != 0) type = TypeX.makeArray(type, dim);
ret = new ExactTypePattern(type,includeSubtypes,isVarArgs);