summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseScope.java13
-rw-r--r--tests/ajcTests.xml10
-rw-r--r--tests/bugs/InnerPointcut.java20
-rw-r--r--tests/bugs/interfaceNames/TransactionTest.java30
-rw-r--r--tests/bugs/interfaceNames/sub/ExecutionMonitor.java11
-rw-r--r--tests/bugs/interfaceNames/sub/ObserverProtocol.aj6
-rw-r--r--tests/jimTests.xml2
-rw-r--r--tests/new/EachObjectInDeepPackage.java11
8 files changed, 101 insertions, 2 deletions
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 @@
<run class="WeaveLocal"/>
</ajc-test>
+ <ajc-test dir="bugs" pr="32428"
+ title="can't use pointcuts defined in inner aspects ">
+ <compile files="InnerPointcut.java"/>
+ <run class="InnerPointcut"/>
+ </ajc-test>
+ <ajc-test dir="bugs/interfaceNames" pr="32421"
+ title="can't resolve nested public interfaces (also PR#32399)">
+ <compile files="TransactionTest.java,sub/ExecutionMonitor.java,sub/ObserverProtocol.aj"/>
+ <run class="TransactionTest"/>
+ </ajc-test>
</suite>
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 @@
<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd">
<suite>
-
-
<!--
diff --git a/tests/new/EachObjectInDeepPackage.java b/tests/new/EachObjectInDeepPackage.java
index 9e52b4d08..2269af4ad 100644
--- a/tests/new/EachObjectInDeepPackage.java
+++ b/tests/new/EachObjectInDeepPackage.java
@@ -1,9 +1,20 @@
+/*
+ * Modified this test case to reflect the fact that types in the default package
+ * can only be used in named packages if they are imported.
+ *
+ * I believe that according to the 1.1 interpretation of the JLS that this import
+ * is also disallowed and there is no way to refer to types in the default package
+ * from a named package.
+ */
+
package the.deep.pkg;
import org.aspectj.testing.Tester;
+import EachObjectTarget;
aspect Aspect pertarget(target(EachObjectTarget)) {
before(): call(void foo(..)) {
+ EachObjectTarget t = null;
Tester.check(true, "Dummy test");
}
}