janino-compiler / janino

Janino is a super-small, super-fast Java™ compiler.
http://janino-compiler.github.io/janino
Other
1.25k stars 208 forks source link

Compilation of simple IF failed (ver 3.1.8) #198

Closed zstan closed 1 year ago

zstan commented 1 year ago

Compilation of

public void execute(ExecutionContext ctx, Object in1, Object out) {
  Integer case_when_value;
  if (24 + 1 == 26 - 1) {
    case_when_value = (Integer) null;
  } else {
    case_when_value = Integer.valueOf(24 + 1);
  }
  ctx.rowHandler().set(0, out, case_when_value);
}

failed with:

Caused by: org.codehaus.commons.compiler.InternalCompilerException: Line 8, Column 20: Compiling "ctx.rowHandler().set(0, out, case_when_value)" at org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:5819) at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:4053) at org.codehaus.janino.UnitCompiler.access$6100(UnitCompiler.java:236) at org.codehaus.janino.UnitCompiler$13.visitMethodInvocation(UnitCompiler.java:4028) at org.codehaus.janino.UnitCompiler$13.visitMethodInvocation(UnitCompiler.java:4003) at org.codehaus.janino.Java$MethodInvocation.accept(Java.java:5470) at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:4003) at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2487) ... 55 more Caused by: org.codehaus.commons.compiler.InternalCompilerException: Line 8, Column 32: Compiling "case_when_value" at org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:5819) at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:5323) at org.codehaus.janino.UnitCompiler.access$9300(UnitCompiler.java:236) at org.codehaus.janino.UnitCompiler$16.visitMethodInvocation(UnitCompiler.java:4698) at org.codehaus.janino.UnitCompiler$16.visitMethodInvocation(UnitCompiler.java:4674) at org.codehaus.janino.Java$MethodInvocation.accept(Java.java:5470) at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:4674) at org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:5817) ... 62 more Caused by: org.codehaus.commons.compiler.InternalCompilerException: Invalid local variable index 4 at org.codehaus.janino.UnitCompiler.getLocalVariableTypeInfo(UnitCompiler.java:13498) at org.codehaus.janino.UnitCompiler.load(UnitCompiler.java:12500) at org.codehaus.janino.UnitCompiler.load(UnitCompiler.java:12475) at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4745) at org.codehaus.janino.UnitCompiler.access$8200(UnitCompiler.java:236) at org.codehaus.janino.UnitCompiler$16$1.visitLocalVariableAccess(UnitCompiler.java:4684) at org.codehaus.janino.UnitCompiler$16$1.visitLocalVariableAccess(UnitCompiler.java:4678) at org.codehaus.janino.Java$LocalVariableAccess.accept(Java.java:4661) at org.codehaus.janino.UnitCompiler$16.visitLvalue(UnitCompiler.java:4678) at org.codehaus.janino.UnitCompiler$16.visitLvalue(UnitCompiler.java:4674) at org.codehaus.janino.Java$Lvalue.accept(Java.java:4528) at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:4674) at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4741) at org.codehaus.janino.UnitCompiler.access$7700(UnitCompiler.java:236) at org.codehaus.janino.UnitCompiler$16$1.visitAmbiguousName(UnitCompiler.java:4679) at org.codehaus.janino.UnitCompiler$16$1.visitAmbiguousName(UnitCompiler.java:4678) at org.codehaus.janino.Java$AmbiguousName.accept(Java.java:4603) at org.codehaus.janino.UnitCompiler$16.visitLvalue(UnitCompiler.java:4678) at org.codehaus.janino.UnitCompiler$16.visitLvalue(UnitCompiler.java:4674) at org.codehaus.janino.Java$Lvalue.accept(Java.java:4528) at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:4674) at org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:5817)

zstan commented 1 year ago

seems this fixed in 1.3.9, thanks !