summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjhugunin <jhugunin>2003-08-05 00:22:05 +0000
committerjhugunin <jhugunin>2003-08-05 00:22:05 +0000
commite85783d87e6d499e9ef3591b6801631566ed8edc (patch)
treea3b390d837a3d06b79c1c73ea3856119655f86bc
parent29457c3d6d0b4cd7cca1d2867e6bd80a56a24722 (diff)
downloadaspectj-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.xml17
-rw-r--r--tests/ajcTestsFailing.xml17
-rw-r--r--weaver/src/org/aspectj/weaver/ResolvedTypeX.java14
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);