You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by ke...@apache.org on 2004/07/29 00:46:15 UTC

svn commit: rev 30882 - incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/apt

Author: kentam
Date: Wed Jul 28 15:46:14 2004
New Revision: 30882

Modified:
   incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/apt/AptControlInterface.java
Log:
Add build error for malformed public interface inheritance chain.



Modified: incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/apt/AptControlInterface.java
==============================================================================
--- incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/apt/AptControlInterface.java	(original)
+++ incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/apt/AptControlInterface.java	Wed Jul 28 15:46:14 2004
@@ -97,6 +97,16 @@
             }
         }
 
+        // At this point, we're processing the root of the interface heirarchy,
+        // which is not permitted to be a ControlExtension (that would imply a
+        // ControlExtension that wasn't actually extending a ControlInterface).
+        if ( isExtension() )
+        {
+            _env.getMessager().printError(_intfDecl.getPosition(),
+              "Interfaces annotated with ControlExtension must extend an interface annotated with " +
+              "ControlInterface");
+        }
+            
         return null;
     }
 
@@ -251,7 +261,8 @@
      * Returns the most-derived interface in the inheritance chain that is annotated
      * with @ControlInterface.  It represents the point in the inheritance chain where
      * @ControlInterface becomes @ControlExtension (i.e., anything interface derived from
-     * the 'most-derived interface' is annotated with @ControlExtension).
+     * the 'most-derived interface' is annotated with @ControlExtension).  May return 
+     * null if the inheritance chain is malformed.
      */
     public ControlInterface getMostDerivedInterface()
     {
@@ -274,8 +285,6 @@
             ancestor = ancestor.getSuperClass();
         }
 
-        assert ( ancestor != null ) : "@ControlExtension not rooted in @ControlInterface, should have been caught earlier";
-
         return ancestor;
     }
 
@@ -322,9 +331,10 @@
         // Find the nearest @ControlInterface, which is where the relevant control checker
         // annotation will be found.
         //
-        //
 
         AptControlInterface mostDerived = (AptControlInterface) getMostDerivedInterface();
+        if ( mostDerived == null )
+            return;
 
         InterfaceDeclaration intfDecl = mostDerived._intfDecl;