diff options
8 files changed, 86 insertions, 2 deletions
diff --git a/org.aspectj.matcher/src/org/aspectj/weaver/ResolvedType.java b/org.aspectj.matcher/src/org/aspectj/weaver/ResolvedType.java index 366f16b1a..ace82bca5 100644 --- a/org.aspectj.matcher/src/org/aspectj/weaver/ResolvedType.java +++ b/org.aspectj.matcher/src/org/aspectj/weaver/ResolvedType.java @@ -1445,7 +1445,7 @@ public abstract class ResolvedType extends UnresolvedType implements AnnotatedEl } for (ConcreteTypeMunger munger : getInterTypeMungersIncludingSupers()) { - if (munger.getSignature() != null && munger.getSignature().isAbstract()) { // Rule 1 + if (munger.getSignature() != null && munger.getSignature().isAbstract() && munger.getMunger().getKind()!=ResolvedTypeMunger.PrivilegedAccess) { // Rule 1 if (munger.getMunger().getKind() == ResolvedTypeMunger.MethodDelegate2) { // ignore for @AJ ITD as munger.getSignature() is the // interface method hence abstract diff --git a/tests/bugs171/pr386049/de/scrum_master/galileo/LoggingAspect.aj b/tests/bugs171/pr386049/de/scrum_master/galileo/LoggingAspect.aj new file mode 100755 index 000000000..ee45206fb --- /dev/null +++ b/tests/bugs171/pr386049/de/scrum_master/galileo/LoggingAspect.aj @@ -0,0 +1,11 @@ +package de.scrum_master.galileo;
+
+import de.scrum_master.galileo.filter.BasicFilter;
+
+privileged aspect LoggingAspect
+{
+ void around(BasicFilter filter) : execution(* BasicFilter.run()) && this(filter) {
+ filter.getLogMessage(); proceed(filter);
+ }
+
+}
diff --git a/tests/bugs171/pr386049/de/scrum_master/galileo/filter/BasicFilter.java b/tests/bugs171/pr386049/de/scrum_master/galileo/filter/BasicFilter.java new file mode 100755 index 000000000..0d6aac662 --- /dev/null +++ b/tests/bugs171/pr386049/de/scrum_master/galileo/filter/BasicFilter.java @@ -0,0 +1,10 @@ +package de.scrum_master.galileo.filter;
+
+
+public abstract class BasicFilter
+{
+ protected abstract String getLogMessage();
+ public void run() { + System.out.println("run()"); + } +}
diff --git a/tests/bugs171/pr386049/de/scrum_master/galileo/filter/JsoupFilter.java b/tests/bugs171/pr386049/de/scrum_master/galileo/filter/JsoupFilter.java new file mode 100755 index 000000000..da14ff778 --- /dev/null +++ b/tests/bugs171/pr386049/de/scrum_master/galileo/filter/JsoupFilter.java @@ -0,0 +1,17 @@ +package de.scrum_master.galileo.filter;
+
+
+public class JsoupFilter extends BasicFilter {
+ @Override
+ protected String getLogMessage() {
+ System.out.println("JsoupFilter.getLogMessage()"); + return "Cleaning up HTML, removing clutter, fixing structure";
+ }
+ + public static void main(String []argv) { + new JsoupFilter().run(); + } + +
+
+}
diff --git a/tests/bugs171/pr387568/Code.java b/tests/bugs171/pr387568/Code.java new file mode 100644 index 000000000..99d248803 --- /dev/null +++ b/tests/bugs171/pr387568/Code.java @@ -0,0 +1,17 @@ +import java.lang.annotation.*; + + +class AAA { + public void m() { + Color[] cs = Color.values(); + } +} + +aspect Foo { + after(): @annotation(Anno) {} +} + +@Retention(RetentionPolicy.RUNTIME) +@interface Anno {} + +enum Color {R,G,B;} diff --git a/tests/src/org/aspectj/systemtest/ajc171/Ajc171Tests.java b/tests/src/org/aspectj/systemtest/ajc171/Ajc171Tests.java index a8dc9a678..baebd2518 100644 --- a/tests/src/org/aspectj/systemtest/ajc171/Ajc171Tests.java +++ b/tests/src/org/aspectj/systemtest/ajc171/Ajc171Tests.java @@ -21,6 +21,14 @@ import org.aspectj.testing.XMLBasedAjcTestCase; */ public class Ajc171Tests extends org.aspectj.testing.XMLBasedAjcTestCase { +// public void testUnresolvableEnum_pr387568() { +// runTest("unresolvable enum"); +// } + + public void testAbstractItds_pr386049() { + runTest("itd abstract"); + } + public void testPublicITDFs_pr73507_1() { runTest("public ITDfs - 1"); } diff --git a/tests/src/org/aspectj/systemtest/ajc171/ajc171.xml b/tests/src/org/aspectj/systemtest/ajc171/ajc171.xml index d24aa9a3a..6e19b7b83 100644 --- a/tests/src/org/aspectj/systemtest/ajc171/ajc171.xml +++ b/tests/src/org/aspectj/systemtest/ajc171/ajc171.xml @@ -2,6 +2,28 @@ <suite> + <ajc-test dir="bugs171/pr387568" title="unresolvable enum"> + <compile files="Code.java" options="-1.5"/> + <!-- + <run class="de.scrum_master.galileo.filter.JsoupFilter"> + <stdout> + <line text="JsoupFilter.getLogMessage()"/> + <line text="run()"/> + </stdout> + </run> + --> + </ajc-test> + + <ajc-test dir="bugs171/pr386049" title="itd abstract"> + <compile files="de/scrum_master/galileo/filter/BasicFilter.java de/scrum_master/galileo/filter/JsoupFilter.java de/scrum_master/galileo/LoggingAspect.aj" options="-1.5"/> + <run class="de.scrum_master.galileo.filter.JsoupFilter"> + <stdout> + <line text="JsoupFilter.getLogMessage()"/> + <line text="run()"/> + </stdout> + </run> + </ajc-test> + <ajc-test dir="bugs171/pr73507" title="public ITDfs - 1"> <compile files="Case1.java" options="-1.5"/> <run class="Case1"> diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java b/weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java index 8d528e5c1..d65e03787 100644 --- a/weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java +++ b/weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java @@ -717,7 +717,6 @@ public class BcelTypeMunger extends ConcreteTypeMunger { LazyMethodGen mg = makeMethodGen(gen, accessMethod); InstructionList il = new InstructionList(); InstructionFactory fact = gen.getFactory(); - // Type fieldType = BcelWorld.makeBcelType(field.getType()); Type[] paramTypes = BcelWorld.makeBcelTypes(method.getParameterTypes()); int pos = 0; |