aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.aspectj.matcher/src/org/aspectj/weaver/ResolvedType.java2
-rwxr-xr-xtests/bugs171/pr386049/de/scrum_master/galileo/LoggingAspect.aj11
-rwxr-xr-xtests/bugs171/pr386049/de/scrum_master/galileo/filter/BasicFilter.java10
-rwxr-xr-xtests/bugs171/pr386049/de/scrum_master/galileo/filter/JsoupFilter.java17
-rw-r--r--tests/bugs171/pr387568/Code.java17
-rw-r--r--tests/src/org/aspectj/systemtest/ajc171/Ajc171Tests.java8
-rw-r--r--tests/src/org/aspectj/systemtest/ajc171/ajc171.xml22
-rw-r--r--weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java1
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;