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 | |
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
-rw-r--r-- | tests/ajcTests.xml | 17 | ||||
-rw-r--r-- | tests/ajcTestsFailing.xml | 17 | ||||
-rw-r--r-- | weaver/src/org/aspectj/weaver/ResolvedTypeX.java | 14 |
3 files changed, 29 insertions, 19 deletions
diff --git a/tests/ajcTests.xml b/tests/ajcTests.xml index d6ae4b455..22f1019ee 100644 --- a/tests/ajcTests.xml +++ b/tests/ajcTests.xml @@ -6498,6 +6498,21 @@ </compile> </ajc-test> - + <ajc-test dir="bugs" + pr="40805" + title="interface call signatures when declaring method in aspect"> + <compile files="DeclareWarningAndInterfaceMethodCW.java"> + <message kind="warning" line="27" text="call getSomething"/> + <message kind="warning" line="27" text="call ICanGetSomething.getSomething"/> + <message kind="warning" line="31" text="call getSomething"/> + <message kind="warning" line="31" text="call ICanGetSomething.getSomething"/> + <message kind="warning" line="33" text="call getSomething"/> + <message kind="warning" line="33" text="call ICanGetSomething.getSomething"/> + <message kind="warning" line="35" text="call getSomething"/> + <message kind="warning" line="35" text="call ICanGetSomething.getSomething"/> + <message kind="warning" line="38" text="call getSomething"/> + <message kind="warning" line="38" text="call ICanGetSomething.getSomething"/> + </compile> + </ajc-test> </suite> diff --git a/tests/ajcTestsFailing.xml b/tests/ajcTestsFailing.xml index f1fd611a1..ddc6cc1dd 100644 --- a/tests/ajcTestsFailing.xml +++ b/tests/ajcTestsFailing.xml @@ -4,20 +4,5 @@ <!-- contains valid tests that the compiler has never passed --> <suite> - <ajc-test dir="bugs" - pr="40805" - title="interface call signatures when declaring method in aspect"> - <compile files="DeclareWarningAndInterfaceMethodCW.java"> - <message kind="warning" line="27" text="call getSomething"/> - <message kind="warning" line="27" text="call ICanGetSomething.getSomething"/> - <message kind="warning" line="31" text="call getSomething"/> - <message kind="warning" line="31" text="call ICanGetSomething.getSomething"/> - <message kind="warning" line="33" text="call getSomething"/> - <message kind="warning" line="33" text="call ICanGetSomething.getSomething"/> - <message kind="warning" line="35" text="call getSomething"/> - <message kind="warning" line="35" text="call ICanGetSomething.getSomething"/> - <message kind="warning" line="38" text="call getSomething"/> - <message kind="warning" line="38" text="call ICanGetSomething.getSomething"/> - </compile> - </ajc-test> + </suite> 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); |