summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Clement <aclement@gopivotal.com>2014-11-17 14:10:14 -0800
committerAndy Clement <aclement@gopivotal.com>2014-11-17 14:10:14 -0800
commit934f0b86c5543737d4859131024cf73995fdc347 (patch)
treefb94c33ef901ed3d676c00734600a5658f6420ae
parent42c2269b2995336ee80e802753d7a311edaf4b98 (diff)
downloadaspectj-934f0b86c5543737d4859131024cf73995fdc347.tar.gz
aspectj-934f0b86c5543737d4859131024cf73995fdc347.zip
Fix for 451966: privileged aspects and itd on interfaces
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/InterTypeMethodBinding.java9
-rw-r--r--tests/bugs185/451966/Code.java12
-rw-r--r--tests/src/org/aspectj/systemtest/ajc185/ajc185.xml7
3 files changed, 17 insertions, 11 deletions
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/InterTypeMethodBinding.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/InterTypeMethodBinding.java
index ec50597a3..5d17dd357 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/InterTypeMethodBinding.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/InterTypeMethodBinding.java
@@ -14,6 +14,7 @@ package org.aspectj.ajdt.internal.compiler.lookup;
import org.aspectj.ajdt.internal.compiler.ast.InterTypeMethodDeclaration;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.IPrivilegedHandler;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
@@ -99,10 +100,10 @@ public class InterTypeMethodBinding extends MethodBinding {
if (invocationType == declaringClass)
return true;
- // if (invocationType.isPrivileged) {
- // System.out.println("privileged access to: " + this);
- // return true;
- // }
+ if (invocationType.privilegedHandler != null) {
+ // it is a privileged aspect
+ return true;
+ }
if (isProtected()) {
throw new RuntimeException("unimplemented");
diff --git a/tests/bugs185/451966/Code.java b/tests/bugs185/451966/Code.java
index 7a60ede4c..ff4749340 100644
--- a/tests/bugs185/451966/Code.java
+++ b/tests/bugs185/451966/Code.java
@@ -1,7 +1,17 @@
+public class Code {
+ public static void main(String []argv) {
+ new Bar().foo();
+ }
+}
interface Common { }
-interface Allergies extends Common { }
+interface Allergies extends Common {
+ default public void foo() {
+ }
+}
+
+class Bar implements Allergies { }
aspect Y {
private boolean Common.instancesInvariant() {
diff --git a/tests/src/org/aspectj/systemtest/ajc185/ajc185.xml b/tests/src/org/aspectj/systemtest/ajc185/ajc185.xml
index 29ba4af75..5e8f8dc8a 100644
--- a/tests/src/org/aspectj/systemtest/ajc185/ajc185.xml
+++ b/tests/src/org/aspectj/systemtest/ajc185/ajc185.xml
@@ -5,12 +5,7 @@
<ajc-test dir="bugs185/451966" title="itd interface">
<compile files="Code.java" options="-1.8"/>
-<run class="One">
- <stdout>
- <line text="In instance check method doit()"/>
- <line text="In advice()"/>
- <line text="Method m() running"/>
- </stdout>
+<run class="Code">
</run>
</ajc-test>