diff options
author | Andy Clement <aclement@gopivotal.com> | 2014-11-17 14:10:14 -0800 |
---|---|---|
committer | Andy Clement <aclement@gopivotal.com> | 2014-11-17 14:10:14 -0800 |
commit | 934f0b86c5543737d4859131024cf73995fdc347 (patch) | |
tree | fb94c33ef901ed3d676c00734600a5658f6420ae | |
parent | 42c2269b2995336ee80e802753d7a311edaf4b98 (diff) | |
download | aspectj-934f0b86c5543737d4859131024cf73995fdc347.tar.gz aspectj-934f0b86c5543737d4859131024cf73995fdc347.zip |
Fix for 451966: privileged aspects and itd on interfaces
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> |