[kaffe] Re: error:Switch label must be constant [JLS 14.10]
Laurent Vaills
laurent.vaills@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