From 2072ac11448e493e26ab7ff818ce26c6ef33c19c Mon Sep 17 00:00:00 2001 From: jhugunin Date: Mon, 19 May 2003 18:06:04 +0000 Subject: [PATCH] fix and test Bugzilla Bug 37739 Unexpected Xlint:unresolvableMember warning with withincode --- tests/ajcTests.xml | 7 +++ tests/bugs/CatchSig.java | 51 +++++++++++++++++++ tests/jimTests.xml | 2 + .../org/aspectj/weaver/bcel/BcelShadow.java | 5 +- 4 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 tests/bugs/CatchSig.java diff --git a/tests/ajcTests.xml b/tests/ajcTests.xml index 82a150dfe..c5ebe2575 100644 --- a/tests/ajcTests.xml +++ b/tests/ajcTests.xml @@ -6225,5 +6225,12 @@ + + + + + + diff --git a/tests/bugs/CatchSig.java b/tests/bugs/CatchSig.java new file mode 100644 index 000000000..81d960416 --- /dev/null +++ b/tests/bugs/CatchSig.java @@ -0,0 +1,51 @@ +/* + * Bugzilla Bug 37739 + Unexpected Xlint:unresolvableMember warning with withincode + */ +public class CatchSig { + CatchSig(Class type) {} + + CatchSig() { + this(String.class); + } + + public static void main(String[] args) { + new CatchSig(); + new B().test(); + new B().test2(); + B.findClass(); + } +} + +class B extends CatchSig { + public B() { + super(findClass()); + } + + static Class findClass() { + return B.class; + } + + public void test() { + } + + public void test2() { + test(); + } +} + +aspect C { + void around() : + (call (void B.test()) && + withincode (void B.test2())) { + System.out.println("test from test2"); + proceed(); + } + + before(): call(Class B.findClass()) { + System.out.println("from: " + thisEnclosingJoinPointStaticPart); + } + before(): call(Class B.findClass()) && withincode(B.new()) { + System.out.println("from B.new()"); + } +} diff --git a/tests/jimTests.xml b/tests/jimTests.xml index 80a883ac8..5ec4f5a2f 100644 --- a/tests/jimTests.xml +++ b/tests/jimTests.xml @@ -1,4 +1,6 @@ + + \ No newline at end of file diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelShadow.java b/weaver/src/org/aspectj/weaver/bcel/BcelShadow.java index c91731e0e..058231bab 100644 --- a/weaver/src/org/aspectj/weaver/bcel/BcelShadow.java +++ b/weaver/src/org/aspectj/weaver/bcel/BcelShadow.java @@ -828,9 +828,12 @@ public class BcelShadow extends Shadow { } } + //??? need to better understand all the enclosing variants public Member getEnclosingCodeSignature() { - if (enclosingShadow == null) { + if (getKind().isEnclosingKind()) { return getSignature(); + } else if (enclosingShadow == null) { + return getEnclosingMethod().getMemberView(); } else { return enclosingShadow.getSignature(); } -- 2.39.5