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");
+ }
+ }
}
}
--- /dev/null
+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[]){
+ }
+}
--- /dev/null
+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(){
+
+ }
+}
--- /dev/null
+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[]){
+ }
+}
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");