From 4cbd5456f8d8886579970939d58992d32a1746bd Mon Sep 17 00:00:00 2001 From: aclement Date: Tue, 28 Mar 2006 09:34:35 +0000 Subject: [PATCH] test and fix for 126560 (@AJ types resolved in 'current package') and test for 132349 --- tests/bugs151/pr126560/pkg1/A.java | 16 +++++++++++ tests/bugs151/pr126560/pkg1/C.java | 11 ++++++++ tests/bugs151/pr126560/pkg2/InOneFile.java | 27 +++++++++++++++++++ tests/bugs151/pr132349/TopLevelType.java | 8 ++++++ .../systemtest/ajc151/Ajc151Tests.java | 10 +++++++ .../org/aspectj/systemtest/ajc151/ajc151.xml | 18 +++++++++++++ .../aspectj/weaver/bcel/AtAjAttributes.java | 20 ++++++++++++++ .../aspectj/weaver/patterns/SimpleScope.java | 3 +++ 8 files changed, 113 insertions(+) create mode 100644 tests/bugs151/pr126560/pkg1/A.java create mode 100644 tests/bugs151/pr126560/pkg1/C.java create mode 100644 tests/bugs151/pr126560/pkg2/InOneFile.java create mode 100644 tests/bugs151/pr132349/TopLevelType.java 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 { + 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 extends Object implements Set, Iterable 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 @@ + + + + + + + + + + + + + + + + + + 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