diff options
author | aclement <aclement> | 2006-03-28 09:34:35 +0000 |
---|---|---|
committer | aclement <aclement> | 2006-03-28 09:34:35 +0000 |
commit | 4cbd5456f8d8886579970939d58992d32a1746bd (patch) | |
tree | 9cf7e35793a81cc6ffe2b66d95287d300d6ea9b7 | |
parent | 41f1f3a4174de86413942cd8f2c2e7c45d9824d7 (diff) | |
download | aspectj-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.java | 16 | ||||
-rw-r--r-- | tests/bugs151/pr126560/pkg1/C.java | 11 | ||||
-rw-r--r-- | tests/bugs151/pr126560/pkg2/InOneFile.java | 27 | ||||
-rw-r--r-- | tests/bugs151/pr132349/TopLevelType.java | 8 | ||||
-rw-r--r-- | tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java | 10 | ||||
-rw-r--r-- | tests/src/org/aspectj/systemtest/ajc151/ajc151.xml | 18 | ||||
-rw-r--r-- | weaver/src/org/aspectj/weaver/bcel/AtAjAttributes.java | 20 | ||||
-rw-r--r-- | weaver/src/org/aspectj/weaver/patterns/SimpleScope.java | 3 |
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); } |