aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraclement <aclement>2006-03-28 09:34:35 +0000
committeraclement <aclement>2006-03-28 09:34:35 +0000
commit4cbd5456f8d8886579970939d58992d32a1746bd (patch)
tree9cf7e35793a81cc6ffe2b66d95287d300d6ea9b7
parent41f1f3a4174de86413942cd8f2c2e7c45d9824d7 (diff)
downloadaspectj-4cbd5456f8d8886579970939d58992d32a1746bd.tar.gz
aspectj-4cbd5456f8d8886579970939d58992d32a1746bd.zip
test and fix for 126560 (@AJ types resolved in 'current package') and test for 132349
-rw-r--r--tests/bugs151/pr126560/pkg1/A.java16
-rw-r--r--tests/bugs151/pr126560/pkg1/C.java11
-rw-r--r--tests/bugs151/pr126560/pkg2/InOneFile.java27
-rw-r--r--tests/bugs151/pr132349/TopLevelType.java8
-rw-r--r--tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java10
-rw-r--r--tests/src/org/aspectj/systemtest/ajc151/ajc151.xml18
-rw-r--r--weaver/src/org/aspectj/weaver/bcel/AtAjAttributes.java20
-rw-r--r--weaver/src/org/aspectj/weaver/patterns/SimpleScope.java3
8 files changed, 113 insertions, 0 deletions
diff --git a/tests/bugs151/pr126560/pkg1/A.java b/tests/bugs151/pr126560/pkg1/A.java
new file mode 100644
index 000000000..ac91d7b7e
--- /dev/null
+++ b/tests/bugs151/pr126560/pkg1/A.java
@@ -0,0 +1,16 @@
+package pkg1;
+
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.DeclareWarning;
+import org.aspectj.lang.annotation.DeclareError;
+
+@Aspect
+public class A {
+
+ @DeclareWarning("execution(* C.warningMethod())")
+ static final String warning = "warning";
+
+ @DeclareError("execution(* C.badMethod())")
+ static final String error = "error";
+
+}
diff --git a/tests/bugs151/pr126560/pkg1/C.java b/tests/bugs151/pr126560/pkg1/C.java
new file mode 100644
index 000000000..8bb6fc5af
--- /dev/null
+++ b/tests/bugs151/pr126560/pkg1/C.java
@@ -0,0 +1,11 @@
+package pkg1;
+
+public class C {
+
+ public void warningMethod() {
+ }
+
+ public void badMethod() {
+ }
+
+}
diff --git a/tests/bugs151/pr126560/pkg2/InOneFile.java b/tests/bugs151/pr126560/pkg2/InOneFile.java
new file mode 100644
index 000000000..bd11fd1e8
--- /dev/null
+++ b/tests/bugs151/pr126560/pkg2/InOneFile.java
@@ -0,0 +1,27 @@
+package pkg2;
+
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.DeclareWarning;
+import org.aspectj.lang.annotation.DeclareError;
+
+public class InOneFile {
+
+ public void hello() {}
+
+ public void hi() {}
+
+ public void target() {
+ hello();
+ hi();
+ }
+
+ @Aspect
+ public static class DeowAspect {
+
+ @DeclareWarning("call(* InOneFile.hello())")
+ final static String onHello = "call hello";
+
+ @DeclareError("call(* InOneFile.hi())")
+ final static String onHi = "call hi";
+ }
+}
diff --git a/tests/bugs151/pr132349/TopLevelType.java b/tests/bugs151/pr132349/TopLevelType.java
new file mode 100644
index 000000000..268c06717
--- /dev/null
+++ b/tests/bugs151/pr132349/TopLevelType.java
@@ -0,0 +1,8 @@
+public class TopLevelType<E> {
+ public static class NestedType {}
+}
+
+aspect SomeAspect {
+ public void TopLevelType.NestedType.someMethod() {
+ }
+} \ No newline at end of file
diff --git a/tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java b/tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java
index 061546114..383fc05b3 100644
--- a/tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java
+++ b/tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java
@@ -25,6 +25,7 @@ import org.aspectj.testing.XMLBasedAjcTestCase;
public class Ajc151Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
+ // public void testItdOnInnerTypeOfGenericType_pr132349() { runTest("ITD on inner type of generic type");}
public void testAnnotationsAndItds_pr98901() { runTest("annotations and itds");}
public void testAnnotationsAndItds_pr98901_2() { runTest("annotations and itds - 2");}
public void testCircularGenerics_pr133307() { runTest("circular generics");}
@@ -52,6 +53,15 @@ public class Ajc151Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
public void testAtAspectInheritsAdviceWithTJPAndThis_pr125699 () { runTest("inherit advice with this() and thisJoinPoint"); }
public void testAtAspectInheritsAdviceWithTJPAndThis_pr125699_2 () {runTest("inherit advice with this() and thisJoinPoint - 2"); }
public void testBrokenLTW_pr128744() { runTest("broken ltw"); }
+
+ public void testAtAspectNoInvalidAbsoluteTypeName_pr126560() {
+ runTest("@AJ deow doesn't throw an invalidAbsoluteTypeName when specify type in the same package");
+ }
+
+ public void testAtAspectNoInvalidAbsoluteTypeName_pr126560_2() {
+ runTest("@AJ deow doesn't throw an invalidAbsoluteTypeName when specify type in the same file");
+ }
+
public void testArrayindexoutofbounds_pr129566() {
runTest("arrayindexoutofbounds");
// public class SkipList<T extends Comparable> extends Object implements Set<T>, Iterable<T>
diff --git a/tests/src/org/aspectj/systemtest/ajc151/ajc151.xml b/tests/src/org/aspectj/systemtest/ajc151/ajc151.xml
index 96e6d9313..d863a24b2 100644
--- a/tests/src/org/aspectj/systemtest/ajc151/ajc151.xml
+++ b/tests/src/org/aspectj/systemtest/ajc151/ajc151.xml
@@ -3,6 +3,24 @@
<!-- AspectJ v1.5.1 Tests -->
<suite>
+ <ajc-test dir="bugs151/pr132349" title="ITD on inner type of generic type">
+ <compile files="TopLevelType.java" options="-1.5"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs151/pr126560" title="@AJ deow doesn't throw an invalidAbsoluteTypeName when specify type in the same package">
+ <compile files="pkg1/C.java, pkg1/A.java" options="-1.5">
+ <message kind="error" line="8" text="error"/>
+ <message kind="warning" line="5" text="warning"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="bugs151/pr126560" title="@AJ deow doesn't throw an invalidAbsoluteTypeName when specify type in the same file">
+ <compile files="pkg2/InOneFile.java" options="-1.5">
+ <message kind="warning" line="14" text="call hello"/>
+ <message kind="error" line="15" text="call hi"/>
+ </compile>
+ </ajc-test>
+
<ajc-test dir="bugs151/pr98901" title="annotations and itds">
<compile files="Failing.java" options="-1.5"/>
<run class="Failing">
diff --git a/weaver/src/org/aspectj/weaver/bcel/AtAjAttributes.java b/weaver/src/org/aspectj/weaver/bcel/AtAjAttributes.java
index 2e00fcc39..d542571b6 100644
--- a/weaver/src/org/aspectj/weaver/bcel/AtAjAttributes.java
+++ b/weaver/src/org/aspectj/weaver/bcel/AtAjAttributes.java
@@ -1587,6 +1587,26 @@ public class AtAjAttributes {
public ISourceLocation makeSourceLocation(IHasPosition location) {
return m_sourceContext.makeSourceLocation(location);
}
+
+ public UnresolvedType lookupType(String name, IHasPosition location) {
+ // bug 126560
+ if (m_enclosingType != null) {
+ // add the package we're in to the list of imported
+ // prefixes so that we can find types in the same package
+ String pkgName = m_enclosingType.getPackageName();
+ if (pkgName != null && !pkgName.equals("")) {
+ String[] currentImports = getImportedPrefixes();
+ String[] newImports = new String[currentImports.length + 1];
+ for (int i = 0; i < currentImports.length; i++) {
+ newImports[i] = currentImports[i];
+ }
+ newImports[currentImports.length] = pkgName.concat(".");
+ setImportedPrefixes(newImports);
+ }
+ }
+ return super.lookupType(name,location);
+ }
+
}
/**
diff --git a/weaver/src/org/aspectj/weaver/patterns/SimpleScope.java b/weaver/src/org/aspectj/weaver/patterns/SimpleScope.java
index 13475e6a0..c85b781ca 100644
--- a/weaver/src/org/aspectj/weaver/patterns/SimpleScope.java
+++ b/weaver/src/org/aspectj/weaver/patterns/SimpleScope.java
@@ -44,6 +44,9 @@ public class SimpleScope implements IScope {
public UnresolvedType lookupType(String name, IHasPosition location) {
for (int i=0; i<importedNames.length; i++) {
String importedName = importedNames[i];
+// // make sure we're matching against the
+// // type name rather than part of it
+// if (importedName.endsWith("." + name)) {
if (importedName.endsWith(name)) {
return world.resolve(importedName);
}