]> source.dussan.org Git - aspectj.git/commitdiff
test and fix for pr115038
authoraclement <aclement>
Fri, 4 Nov 2005 10:05:05 +0000 (10:05 +0000)
committeraclement <aclement>
Fri, 4 Nov 2005 10:05:05 +0000 (10:05 +0000)
org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeDeclaration.java
tests/bugs150/pr115038.aj [new file with mode: 0644]
tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java
tests/src/org/aspectj/systemtest/ajc150/ajc150.xml

index 2de741e10550df0acf672c863f58743b0b94fbfe..ef7ecdb7e94a93fa3e79cd1aa05c00c8e15544f9 100644 (file)
@@ -358,7 +358,11 @@ public abstract class InterTypeDeclaration extends AjMethodDeclaration {
                        scope.problemReporter().signalError(sourceStart,sourceEnd,
                                          "Cannot make inter-type declarations on type variables, use an interface and declare parents");
                        this.ignoreFurtherInvestigation=true;
-                       rb = new ProblemReferenceBinding(rb.compoundName,((TypeVariableBinding)rb).firstBound.enclosingType(),0);
+                       ReferenceBinding closestMatch = null;
+                       if (((TypeVariableBinding)rb).firstBound!=null) {
+                               closestMatch = ((TypeVariableBinding)rb).firstBound.enclosingType();
+                       }
+                       rb = new ProblemReferenceBinding(rb.compoundName,closestMatch,0);
                        return;
                }
 
diff --git a/tests/bugs150/pr115038.aj b/tests/bugs150/pr115038.aj
new file mode 100644 (file)
index 0000000..46dc5a1
--- /dev/null
@@ -0,0 +1,5 @@
+public abstract aspect pr115038<Observable, Observer, Event> {
+       public boolean Observer.handle(Observable o, Event e) {
+               return true;
+       }
+}
index 92b29d6b804bac9ce2adb82e24e743617a2e97b4..8d8f2a8370222f9fb631719c2fbc7a6981db04b5 100644 (file)
@@ -52,6 +52,7 @@ public class Ajc150Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
   */
   
   public void testUnboundFormal_pr112027()    { runTest("unexpected error unboundFormalInPC");}
+  public void testNPEScopeSetup_pr115038()    { runTest("NPE in ensureScopeSetup");}
   public void testCCEGenerics_pr113445()      { runTest("Generics ClassCastException");}
   public void testMatthewsAspect_pr113947_1() { runTest("maws generic aspect - 1");}
   public void testMatthewsAspect_pr113947_2() { runTest("maws generic aspect - 2");}
index 4316e6ec87becdacbc488e399a31a7539e737e95..b6b5e6bf83cebe4f953ae5dbd8a3f84ae927b38f 100644 (file)
     <ajc-test dir="bugs150" title="Problem with constructor ITDs">
         <compile files="pr112783.aj" options="-1.5"/>
     </ajc-test>
-
-    <ajc-test dir="bugs150" title="ITDC with no explicit cons call">
+    <ajc-test dir="bugs150" title="NPE in ensureScopeSetup">
+        <compile files="pr115038.aj" options="-1.5">
+          <!-- fixme asc the 'static ref' messages are a bit poor and ought to be eliminated... -->
+          <message kind="error" line="2" text="Cannot make a static reference to the non-static type Observable"/>
+          <message kind="error" line="2" text="Cannot make a static reference to the non-static type Event"/>
+          <message kind="error" line="2" text="Cannot make inter-type declarations on type variables"/>
+        </compile>
+    </ajc-test>
+   <ajc-test dir="bugs150" title="ITDC with no explicit cons call">
       <compile files="Pr62606.aj" options="-1.5">
         <message kind="warning" line="6" text="[Xlint:noExplicitConstructorCall]"/>
       </compile>
     </ajc-test>
-    
     <ajc-test dir="java5/generics/bugs" title="using same type variable in ITD">
       <compile files="SameTypeVariable.aj" options="-1.5">
       </compile>
       </compile>
     </ajc-test>
     
-    <ajc-test dir="java5/compliance" title="java 5 pointcuts and declares at pre-java 5 compliance levels">
-      <compile files="AJ5FeaturesAtJ14.aj" options="-1.4">
-        <message kind="error" line="3" text="the @annotation pointcut expression is only supported at Java 5 compliance level or above"/>
-        <message kind="error" line="11" text="the @within pointcut expression is only supported at Java 5 compliance level or above"/>
-        <message kind="error" line="13" text="the @withincode pointcut expression is only supported at Java 5 compliance level or above"/>
-        <message kind="error" line="5" text="the @this pointcut expression is only supported at Java 5 compliance level or above"/>
-        <message kind="error" line="7" text="the @target pointcut expression is only supported at Java 5 compliance level or above"/>
-        <message kind="error" line="9" text="the @args pointcut expression is only supported at Java 5 compliance level or above"/>
-        <message kind="error" line="15" text="declare @type is only supported at Java 5 compliance level or above"/>
-        <message kind="error" line="15" text="annotations are only available if source level is 5.0"/>
-        <message kind="error" line="15" text="cannot convert from Foo to Annotation"/>     
-        <message kind="error" line="17" text="declare @method is only supported at Java 5 compliance level or above"/>
-        <message kind="error" line="17" text="annotations are only available if source level is 5.0"/>
-        <message kind="error" line="17" text="cannot convert from Foo to Annotation"/>
-        <message kind="error" line="19" text="declare @field is only supported at Java 5 compliance level or above"/>
-        <message kind="error" line="19" text="annotations are only available if source level is 5.0"/>
-        <message kind="error" line="19" text="cannot convert from Foo to Annotation"/>
-        <message kind="error" line="21" text="declare @constructor is only supported at Java 5 compliance level or above"/>       
-        <message kind="error" line="21" text="annotations are only available if source level is 5.0"/>
-        <message kind="error" line="21" text="cannot convert from Foo to Annotation"/>
-        <message kind="error" line="25" text="annotation type patterns are only supported at Java 5 compliance level or above"/>
-        <message kind="error" line="27" text="annotation type patterns are only supported at Java 5 compliance level or above"/>
-      </compile>
-    </ajc-test>
-    
     <ajc-test dir="bugs150/pr86903" title="bcelrenderer bad">
       <compile files="GenericService.java,Service.java,Main.java,BadWormhole.java"/>
       <run class="Main"/>