Community
Participate
Working Groups
The following code crashes eclipse compiler: public class CompilerCrash { public static void main(String[] args) { if(new Integer(2) == 0) {} } } Internal compiler error java.lang.ArrayIndexOutOfBoundsException: -1 at org.eclipse.jdt.internal.compiler.codegen.StackMapFrameCodeStream.generateUnboxingConversion(StackMapFrameCodeStream.java:737) at org.eclipse.jdt.internal.compiler.codegen.CodeStream.generateImplicitConversion(CodeStream.java:1907) at org.eclipse.jdt.internal.compiler.ast.AllocationExpression.generateCode(AllocationExpression.java:129) at org.eclipse.jdt.internal.compiler.ast.EqualExpression.generateNonBooleanEqual(EqualExpression.java:418) at org.eclipse.jdt.internal.compiler.ast.EqualExpression.generateCode(EqualExpression.java:158) at org.eclipse.jdt.internal.compiler.ast.IfStatement.generateCode(IfStatement.java:200) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.generateCode(AbstractMethodDeclaration.java:229) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.generateCode(AbstractMethodDeclaration.java:176) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:533) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:584) at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.generateCode(CompilationUnitDeclaration.java:214) at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:602) at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:411) at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:353) at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.compile(IncrementalImageBuilder.java:302) at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:290) at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.build(IncrementalImageBuilder.java:130) at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildDeltas(JavaBuilder.java:252) at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:185) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:603) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:167) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:230) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:233) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:252) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:285) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:154) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:217) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58) zzzSCJP/src/chapter3/e CompilerCrash.java line 0 1178045134109 211779
It works fine with 3.3M7 candidate. I'll check 3.2.x maintenance stream.
Reproduced with 3.2.x maintenance stream. Philippe, do you want a fix for this one in this stream?
This is also a problem in HEAD as it leads to a VerifyError. I am invesigating a fix. Thanks for the report.
Thanks for your support and super quick answer, I was thinking that this was an automated response :-)
Created attachment 65554 [details] Proposed fix
Created attachment 65555 [details] Regression test
Created attachment 65557 [details] Better fix
Created attachment 65558 [details] Regression tests
Created attachment 65559 [details] Better patch Cleanup some unnecessary test in the switch statement.
Philippe, please review. Would be a good candidate for 3.3M7.
Patch looks good. +1 for 3.2.x. Also did you check QualifiedAllocationExpression ? It may need a similar fix.
Created attachment 65619 [details] Last patch This patch also includes the corresponding change for the QualifiedAllocationExpression
Created attachment 65620 [details] More regression tests
Set as 3.3M7. Fix in under testing.
Released for 3.3M7. Added regression tests: org.eclipse.jdt.core.tests.compiler.regression.AutoBoxingTest.test147() org.eclipse.jdt.core.tests.compiler.regression.AutoBoxingTest.test148() org.eclipse.jdt.core.tests.compiler.regression.AutoBoxingTest.test149() org.eclipse.jdt.core.tests.compiler.regression.AutoBoxingTest.test150() org.eclipse.jdt.core.tests.compiler.regression.AutoBoxingTest.test151() org.eclipse.jdt.core.tests.compiler.regression.AutoBoxingTest.test152()
Verify for 3.3M7 with I20070503-1400
Reopen to backport to 3.2.x maintenance stream.
Created attachment 65913 [details] Last patch for 3.2.x maintenance stream
Released in 3.2 maintenance stream. Same regression tests added.
I'll set the milestone when 3.2.3 is available.
Setting milestone to 3.3M7 since there might never be a 3.2.3. If a 3.2.3 was to appear, then we should set the milestone to 3.2.3.