diff options
author | aclement <aclement> | 2006-01-23 14:25:06 +0000 |
---|---|---|
committer | aclement <aclement> | 2006-01-23 14:25:06 +0000 |
commit | 01a8b2eb36e1a34c80697c2034f9657b74dc281a (patch) | |
tree | dcda6cc1131c03ad988a285aba5b5bfb300fb81c /weaver | |
parent | 8676df9bca4e5e169206f314c8ad5d3da38bc28e (diff) | |
download | aspectj-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.java | 4 | ||||
-rw-r--r-- | weaver/src/org/aspectj/weaver/patterns/TypePattern.java | 10 |
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()); |