summaryrefslogtreecommitdiffstats
path: root/weaver
diff options
context:
space:
mode:
authoraclement <aclement>2006-01-23 14:25:06 +0000
committeraclement <aclement>2006-01-23 14:25:06 +0000
commit01a8b2eb36e1a34c80697c2034f9657b74dc281a (patch)
treedcda6cc1131c03ad988a285aba5b5bfb300fb81c /weaver
parent8676df9bca4e5e169206f314c8ad5d3da38bc28e (diff)
downloadaspectj-01a8b2eb36e1a34c80697c2034f9657b74dc281a.tar.gz
aspectj-01a8b2eb36e1a34c80697c2034f9657b74dc281a.zip
test and fix for 124808
Diffstat (limited to 'weaver')
-rw-r--r--weaver/src/org/aspectj/weaver/patterns/ExactTypePattern.java4
-rw-r--r--weaver/src/org/aspectj/weaver/patterns/TypePattern.java10
2 files changed, 12 insertions, 2 deletions
diff --git a/weaver/src/org/aspectj/weaver/patterns/ExactTypePattern.java b/weaver/src/org/aspectj/weaver/patterns/ExactTypePattern.java
index ec6850a0e..d3ae46d98 100644
--- a/weaver/src/org/aspectj/weaver/patterns/ExactTypePattern.java
+++ b/weaver/src/org/aspectj/weaver/patterns/ExactTypePattern.java
@@ -110,7 +110,9 @@ public class ExactTypePattern extends TypePattern {
}
private boolean matchesTypeVariable(TypeVariableReferenceType matchType) {
- return false;
+ // was this method previously coded to return false *on purpose* ?? pr124808
+ return this.type.equals(((TypeVariableReference)matchType).getTypeVariable().getFirstBound());
+ //return false;
}
protected boolean matchesExactly(ResolvedType matchType, ResolvedType annotatedType) {
diff --git a/weaver/src/org/aspectj/weaver/patterns/TypePattern.java b/weaver/src/org/aspectj/weaver/patterns/TypePattern.java
index daaa83421..3098f05de 100644
--- a/weaver/src/org/aspectj/weaver/patterns/TypePattern.java
+++ b/weaver/src/org/aspectj/weaver/patterns/TypePattern.java
@@ -25,6 +25,7 @@ import org.aspectj.weaver.BCException;
import org.aspectj.weaver.ISourceContext;
import org.aspectj.weaver.IntMap;
import org.aspectj.weaver.ResolvedType;
+import org.aspectj.weaver.TypeVariableReference;
import org.aspectj.weaver.UnresolvedType;
import org.aspectj.weaver.VersionedDataInputStream;
import org.aspectj.weaver.WeaverMessages;
@@ -152,9 +153,16 @@ public abstract class TypePattern extends PatternNode {
//System.out.println(" true");
return true;
}
+ // pr124808
+ Iterator typesIterator = null;
+ if (type.isTypeVariableReference()) {
+ typesIterator = ((TypeVariableReference)type).getTypeVariable().getFirstBound().resolve(type.getWorld()).getDirectSupertypes();
+ } else {
+ typesIterator = type.getDirectSupertypes();
+ }
// FuzzyBoolean ret = FuzzyBoolean.NO; // ??? -eh
- for (Iterator i = type.getDirectSupertypes(); i.hasNext(); ) {
+ for (Iterator i = typesIterator; i.hasNext(); ) {
ResolvedType superType = (ResolvedType)i.next();
// TODO asc generics, temporary whilst matching isnt aware..
//if (superType.isParameterizedType()) superType = superType.getRawType().resolve(superType.getWorld());