diff options
author | jhugunin <jhugunin> | 2003-08-05 00:22:05 +0000 |
---|---|---|
committer | jhugunin <jhugunin> | 2003-08-05 00:22:05 +0000 |
commit | e85783d87e6d499e9ef3591b6801631566ed8edc (patch) | |
tree | a3b390d837a3d06b79c1c73ea3856119655f86bc /weaver | |
parent | 29457c3d6d0b4cd7cca1d2867e6bd80a56a24722 (diff) | |
download | aspectj-e85783d87e6d499e9ef3591b6801631566ed8edc.tar.gz aspectj-e85783d87e6d499e9ef3591b6801631566ed8edc.zip |
fix for Bugzilla Bug 40805
call pointcut with interface type fails if method declared on interface
Diffstat (limited to 'weaver')
-rw-r--r-- | weaver/src/org/aspectj/weaver/ResolvedTypeX.java | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/weaver/src/org/aspectj/weaver/ResolvedTypeX.java b/weaver/src/org/aspectj/weaver/ResolvedTypeX.java index 12bab5521..a9b6fa654 100644 --- a/weaver/src/org/aspectj/weaver/ResolvedTypeX.java +++ b/weaver/src/org/aspectj/weaver/ResolvedTypeX.java @@ -901,12 +901,22 @@ public abstract class ResolvedTypeX extends TypeX { /** return null if not found */ public ResolvedMember lookupMemberNoSupers(Member member) { + ResolvedMember ret; if (member.getKind() == Member.FIELD) { - return lookupMember(member, getDeclaredFields()); + ret = lookupMember(member, getDeclaredFields()); } else { // assert member.getKind() == Member.METHOD || member.getKind() == Member.CONSTRUCTOR - return lookupMember(member, getDeclaredMethods()); + ret = lookupMember(member, getDeclaredMethods()); } + if (ret == null && interTypeMungers != null) { + for (Iterator i = interTypeMungers.iterator(); i.hasNext();) { + ConcreteTypeMunger tm = (ConcreteTypeMunger) i.next(); + if (matches(tm.getSignature(), member)) { + return tm.getSignature(); + } + } + } + return ret; } protected List interTypeMungers = new ArrayList(0); |