From 0a175d2d0330eb9843ad17c917bb2434faab59e7 Mon Sep 17 00:00:00 2001 From: jhugunin Date: Thu, 6 Mar 2003 22:12:00 +0000 Subject: [PATCH] FIXED: Bugzilla Bug 32421 can't resolve nested public interfaces FIXED: Bugzilla Bug 32399 Incorrect binding of protected (marker) interfaces --- .../compiler/lookup/EclipseScope.java | 13 ++++++++ tests/ajcTests.xml | 10 +++++++ tests/bugs/InnerPointcut.java | 20 +++++++++++++ .../bugs/interfaceNames/TransactionTest.java | 30 +++++++++++++++++++ .../interfaceNames/sub/ExecutionMonitor.java | 11 +++++++ .../interfaceNames/sub/ObserverProtocol.aj | 6 ++++ tests/jimTests.xml | 2 -- tests/new/EachObjectInDeepPackage.java | 11 +++++++ 8 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 tests/bugs/InnerPointcut.java create mode 100644 tests/bugs/interfaceNames/TransactionTest.java create mode 100644 tests/bugs/interfaceNames/sub/ExecutionMonitor.java create mode 100644 tests/bugs/interfaceNames/sub/ObserverProtocol.aj diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseScope.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseScope.java index d90f99781..f21e96c69 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseScope.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseScope.java @@ -24,6 +24,7 @@ import org.aspectj.weaver.IHasPosition; import org.aspectj.weaver.ResolvedTypeX; import org.aspectj.weaver.TypeX; import org.aspectj.weaver.World; +import org.aspectj.weaver.patterns.*; import org.aspectj.weaver.patterns.FormalBinding; import org.aspectj.weaver.patterns.IScope; import org.eclipse.jdt.internal.compiler.lookup.ClassScope; @@ -60,6 +61,17 @@ public class EclipseScope implements IScope { public TypeX lookupType(String name, IHasPosition location) { + TypeBinding b = scope.getType(WildTypePattern.splitNames(name)); + //FIXME need reasonable error handling... + if (!b.isValidBinding()) { + return ResolvedTypeX.MISSING; + } + + //System.err.println("binding: " + b); + // Binding(tokens, bits & RestrictiveFlagMASK, this) + return world.fromBinding(b); + + /* computeImports(); // System.out.println("lookup: " + name + " in " + @@ -98,6 +110,7 @@ public class EclipseScope implements IScope { } return resolveVisible(name); + */ } diff --git a/tests/ajcTests.xml b/tests/ajcTests.xml index a43286131..54261ece4 100644 --- a/tests/ajcTests.xml +++ b/tests/ajcTests.xml @@ -5599,5 +5599,15 @@ + + + + + + + + diff --git a/tests/bugs/InnerPointcut.java b/tests/bugs/InnerPointcut.java new file mode 100644 index 000000000..063a5eb65 --- /dev/null +++ b/tests/bugs/InnerPointcut.java @@ -0,0 +1,20 @@ +// for Bug#: 32428 +import org.aspectj.testing.Tester; + + +public class InnerPointcut { + public static void main(String[] args) { + Tester.checkEqual(TrackTestCase.note, "ran"); + } + + pointcut testcutOuter(): within(InnerPointcut); + + static aspect TrackTestCase { + static String note = "not run yet"; + pointcut testcut() : execution(public void mai*(..)); + before() : testcut() && testcutOuter() { + note = "ran"; + } + } + +} diff --git a/tests/bugs/interfaceNames/TransactionTest.java b/tests/bugs/interfaceNames/TransactionTest.java new file mode 100644 index 000000000..a8e83973f --- /dev/null +++ b/tests/bugs/interfaceNames/TransactionTest.java @@ -0,0 +1,30 @@ +import sub.ExecutionMonitor; +import sub.ObserverProtocol; + + +public class TransactionTest { + public static void main(String[] args) { + } + + static Transaction theTransaction; + + private void assertCommitted() { + theTransaction.getCount("method-execution", "commit"); + } + + static aspect MonitorTest { + declare parents: Transaction implements ExecutionMonitor.MonitoredItem; + } +} + +class Transaction { +} + +aspect TransactionControl { + void begin() { + CommitObserver.aspectOf().add(this); + } + static aspect CommitObserver extends ObserverProtocol { + declare parents: TransactionControl implements Observer; + } +} diff --git a/tests/bugs/interfaceNames/sub/ExecutionMonitor.java b/tests/bugs/interfaceNames/sub/ExecutionMonitor.java new file mode 100644 index 000000000..92f9d73f4 --- /dev/null +++ b/tests/bugs/interfaceNames/sub/ExecutionMonitor.java @@ -0,0 +1,11 @@ +package sub; + +public aspect ExecutionMonitor { + public interface MonitoredItem { + int getCount(String eventType, String eventName); + } + + public int MonitoredItem.getCount(String eventType, String eventName) { + return 0; + } +} diff --git a/tests/bugs/interfaceNames/sub/ObserverProtocol.aj b/tests/bugs/interfaceNames/sub/ObserverProtocol.aj new file mode 100644 index 000000000..8d558ad1f --- /dev/null +++ b/tests/bugs/interfaceNames/sub/ObserverProtocol.aj @@ -0,0 +1,6 @@ +package sub; + +public abstract aspect ObserverProtocol { + protected interface Observer { } + public void add(Observer o) {} +} diff --git a/tests/jimTests.xml b/tests/jimTests.xml index b8771ef2a..e7e9b8b97 100644 --- a/tests/jimTests.xml +++ b/tests/jimTests.xml @@ -1,8 +1,6 @@ - -