--- /dev/null
+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";
+
+}
--- /dev/null
+package pkg1;
+
+public class C {
+
+ public void warningMethod() {
+ }
+
+ public void badMethod() {
+ }
+
+}
--- /dev/null
+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";
+ }
+}
--- /dev/null
+public class TopLevelType<E> {
+ public static class NestedType {}
+}
+
+aspect SomeAspect {
+ public void TopLevelType.NestedType.someMethod() {
+ }
+}
\ No newline at end of file
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");}
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>
<!-- 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">
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);
+ }
+
}
/**
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);
}