[kaffe] Re: error:Switch label must be constant [JLS 14.10]

Laurent Vaills laurent.vaills at dms.at
Wed Oct 29 18:35:02 PST 2003


Hello Ito,

Using the latest CVS version of kjc, I am able to compile these 2 files
without any errors or warnings.

Best regards,
Laurent


On Tue, 2003-10-28 at 01:58, Ito Kazumitsu wrote:
> The attached programs do not compile with KJC:
> 
> bash$ java at.dms.kjc.Main Trigger*.java
> TriggerDef.java:10: error:Switch label must be constant [JLS 14.10]
> TriggerDef.java:4: error:Method "indexToRight" must return a value [JLS 8.4.5]
> 
> This error occurs both with kjc-2.1B and with the modified kjc.jar
> from Kaffe CVS.
> 
> Since every field declaration in the body of an interface is
> implicitly public, static, and final [JLS 9.3],  the expression
> used in this case as the switch label should be treated as a constant.
> 
> The following programs were copied from HSQLDB and simplified for testing.
> 
> bash$ cat Trigger.java 
> public interface Trigger {
> 
>     int INSERT_AFTER      = 0;
>     int DELETE_AFTER      = 1;
>     int UPDATE_AFTER      = 2;
>     int INSERT_BEFORE     = INSERT_AFTER + TriggerDef.NUM_TRIGGER_OPS;
>     int DELETE_BEFORE     = DELETE_AFTER + TriggerDef.NUM_TRIGGER_OPS;
>     int UPDATE_BEFORE     = UPDATE_AFTER + TriggerDef.NUM_TRIGGER_OPS;
>     int INSERT_AFTER_ROW  = INSERT_AFTER + 2 * TriggerDef.NUM_TRIGGER_OPS;
>     int DELETE_AFTER_ROW  = DELETE_AFTER + 2 * TriggerDef.NUM_TRIGGER_OPS;
>     int UPDATE_AFTER_ROW  = UPDATE_AFTER + 2 * TriggerDef.NUM_TRIGGER_OPS;
>     int INSERT_BEFORE_ROW = INSERT_BEFORE + 2 * TriggerDef.NUM_TRIGGER_OPS;
>     int DELETE_BEFORE_ROW = DELETE_BEFORE + 2 * TriggerDef.NUM_TRIGGER_OPS;
>     int UPDATE_BEFORE_ROW = UPDATE_BEFORE + 2 * TriggerDef.NUM_TRIGGER_OPS;
> 
> }
> bash$ cat TriggerDef.java 
> class TriggerDef {
> 
>     static final int NUM_TRIGGER_OPS = 3;    // ie ins,del,upd
>     public static int indexToRight(int idx) {
> 
>         switch (idx) {
> 
>             case Trigger.DELETE_AFTER :
>             case Trigger.DELETE_AFTER_ROW :
>             case Trigger.DELETE_BEFORE :
>             case Trigger.DELETE_BEFORE_ROW :
>             case Trigger.INSERT_AFTER :
>             case Trigger.INSERT_AFTER_ROW :
>             case Trigger.INSERT_BEFORE :
>             case Trigger.INSERT_BEFORE_ROW :
>             case Trigger.UPDATE_AFTER :
>             case Trigger.UPDATE_AFTER_ROW :
>             case Trigger.UPDATE_BEFORE :
>             case Trigger.UPDATE_BEFORE_ROW :
>             default :
>                 return 0;
>         }
>     }
> }






More information about the kaffe mailing list