]> source.dussan.org Git - aspectj.git/commitdiff
test and fix for 114875
authoraclement <aclement>
Mon, 21 Nov 2005 09:22:45 +0000 (09:22 +0000)
committeraclement <aclement>
Mon, 21 Nov 2005 09:22:45 +0000 (09:22 +0000)
org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.java
tests/multiIncremental/pr114875/base/Base.java [new file with mode: 0644]
tests/multiIncremental/pr114875/inc1/Sub.java [new file with mode: 0644]
tests/multiIncremental/pr114875/inc2/Base.java [new file with mode: 0644]
tests/src/org/aspectj/systemtest/incremental/tools/MultiProjectIncrementalTests.java

index f5855ba639b6bb7ed075b4e135ccc38707f27201..ab320a1872030133fccbdc9f1ac5af688aead38b 100644 (file)
@@ -240,10 +240,12 @@ public class ValidateAtAspectJAnnotationsVisitor extends ASTVisitor {
                        TypeBinding parentBinding = parentRef.resolvedType;
                        if (parentBinding instanceof SourceTypeBinding) {
                                SourceTypeBinding parentSTB = (SourceTypeBinding) parentBinding;
-                               TypeDeclaration parentDecl = parentSTB.scope.referenceContext;
-                               if (isAspect(parentDecl) && !Modifier.isAbstract(parentDecl.modifiers)) {
-                                       typeDecl.scope.problemReporter().signalError(typeDecl.sourceStart,typeDecl.sourceEnd,"cannot extend a concrete aspect");
-                               }                       
+                               if (parentSTB.scope!=null) { // scope is null if its a binarytypebinding (in AJ world, thats a subclass of SourceTypeBinding)
+                                       TypeDeclaration parentDecl = parentSTB.scope.referenceContext; 
+                                       if (isAspect(parentDecl) && !Modifier.isAbstract(parentDecl.modifiers)) {
+                                               typeDecl.scope.problemReporter().signalError(typeDecl.sourceStart,typeDecl.sourceEnd,"cannot extend a concrete aspect");
+                                       }                       
+                               }
                        }
                }
 
diff --git a/tests/multiIncremental/pr114875/base/Base.java b/tests/multiIncremental/pr114875/base/Base.java
new file mode 100644 (file)
index 0000000..e749543
--- /dev/null
@@ -0,0 +1,16 @@
+package com.aspectj.test;
+
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.aspectj.lang.annotation.Pointcut;
+
+@Aspect
+public abstract class Base {
+
+    @Pointcut //
+    abstract void method();
+
+
+    public static void main(String args[]){
+    }
+}
diff --git a/tests/multiIncremental/pr114875/inc1/Sub.java b/tests/multiIncremental/pr114875/inc1/Sub.java
new file mode 100644 (file)
index 0000000..42d011b
--- /dev/null
@@ -0,0 +1,17 @@
+package com.aspectj.test;
+
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.aspectj.lang.annotation.Pointcut;
+
+@Aspect
+public class Sub extends Base{
+
+    @Pointcut( "execution(* com.aspectj.test.Base.main(..))" )
+    void method(){};
+
+    @Before("method()")
+    public void test(){
+
+    }
+}
diff --git a/tests/multiIncremental/pr114875/inc2/Base.java b/tests/multiIncremental/pr114875/inc2/Base.java
new file mode 100644 (file)
index 0000000..e749543
--- /dev/null
@@ -0,0 +1,16 @@
+package com.aspectj.test;
+
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.aspectj.lang.annotation.Pointcut;
+
+@Aspect
+public abstract class Base {
+
+    @Pointcut //
+    abstract void method();
+
+
+    public static void main(String args[]){
+    }
+}
index 7cb951e1ae441d1b115c6381e4ac8625f65f9281..f31b19a9fe60ec3e90a1a4b8057d5cea0bb4cd8c 100644 (file)
@@ -289,6 +289,17 @@ public class MultiProjectIncrementalTests extends AjdeInteractionTestbed {
                build("PR92837");
        }
        
+       public void testPr114875() {
+               initialiseProject("pr114875");
+               build("pr114875");
+               alter("pr114875","inc1");
+               build("pr114875");
+               checkWasntFullBuild();
+               alter("pr114875","inc2");
+               build("pr114875");
+               checkWasntFullBuild();
+       }
+       
 /*     public void testPr111779() {
                super.VERBOSE=true;
                initialiseProject("PR111779");