# Wrong code generated (compile error)

**URL:** <https://discuss.kotlinlang.org/t/wrong-code-generated-compile-error/557>\
**Category:** Uncategorized\
**Created:** [July 9, 2014, 11:01am UTC](https://discuss.kotlinlang.org/t/wrong-code-generated-compile-error/557 "2014-07-09T11:01:28Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Eabin](https://avatars.discourse-cdn.com/v4/letter/e/e19adc/32.png) [@Eabin](https://discuss.kotlinlang.org/u/Eabin)\
**Post date:** [July 9, 2014, 11:01am UTC](https://discuss.kotlinlang.org/t/wrong-code-generated-compile-error/557/1 "2014-07-09T11:01:28Z")

</div>

The following code yields a compiler exception - am I doing something wrong? (shortened example code, using JDK 1.6.0\_45. (yeah, I know) ):

package tests

import java.util.ArrayDeque  
import kotlin.concurrent.timer

/\*\*

- Created by IntelliJ IDEA.
- Date: 5/8/13
- Time: 6:08 PM  
\*/  
data class DataSample(val time: Long, val size: Long)

class DataRateUtil(val WINDOW\_SIZE: Int) {  
&nbsp;&nbsp;var window = ArrayDeque\<DataSample\>(WINDOW\_SIZE)  
&nbsp;&nbsp;var windowCount = 0

&nbsp;&nbsp;var startTime = System.nanoTime()

&nbsp;&nbsp;var size = 0  
&nbsp;&nbsp;var counter = 0

&nbsp;&nbsp;{  
&nbsp;&nbsp;timer(period = 1024) {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;val now = System.nanoTime()

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;val ts = if (window.isEmpty()) startTime else window.getFirst().time  
&nbsp;&nbsp;}  
&nbsp;&nbsp;}

&nbsp;&nbsp;fun addSample(sample: DataSample) {  
&nbsp;&nbsp;size += sample.size  
&nbsp;&nbsp;windowCount += sample.size  
&nbsp;&nbsp;window.add(sample)

```
  &nbsp;&nbsp;if (window.size() &gt; WINDOW_SIZE) {

```

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;val s = window.remove()  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;windowCount -= s.size  
&nbsp;&nbsp;}

&nbsp;&nbsp;}  
}

* * *

output:

Error:(31, 5) Kotlin: [Internal Error] org.jetbrains.jet.codegen.CompilationException: Back-end (JVM) Internal error: wrong code generatedjava.lang.ArrayIndexOutOfBoundsException 2  
Cause: 2  
File being compiled and position: (31,5) in /home/eabin/Rob\_art\_I/Trunk/imis/imc/tests/src/cc/robart/imc/tests/DataRateUtil.kt  
PsiElement: fun addSample(sample: DataSample) {  
&nbsp;&nbsp;size += sample.size  
&nbsp;&nbsp;windowCount += sample.size  
&nbsp;&nbsp;window.add(sample)  
&nbsp;&nbsp;if (window.size() \> WINDOW\_SIZE) {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;val s = window.remove()  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;windowCount -= s.size  
&nbsp;&nbsp;}  
&nbsp;&nbsp;}  
The root cause was thrown at: Frame.java:1397  
 at org.jetbrains.jet.codegen.FunctionCodegen.endVisit(FunctionCodegen.java:406)  
 at org.jetbrains.jet.codegen.FunctionCodegen.generateMethod(FunctionCodegen.java:169)  
 at org.jetbrains.jet.codegen.FunctionCodegen.generateMethod(FunctionCodegen.java:118)  
 at org.jetbrains.jet.codegen.FunctionCodegen.gen(FunctionCodegen.java:103)  
 at org.jetbrains.jet.codegen.MemberCodegen.genFunctionOrProperty(MemberCodegen.java:120)  
 at org.jetbrains.jet.codegen.ClassBodyCodegen.generateDeclaration(ClassBodyCodegen.java:93)  
 at org.jetbrains.jet.codegen.ImplementationBodyCodegen.generateDeclaration(ImplementationBodyCodegen.java:1631)  
 at org.jetbrains.jet.codegen.ClassBodyCodegen.generateBody(ClassBodyCodegen.java:68)  
 at org.jetbrains.jet.codegen.MemberCodegen.generate(MemberCodegen.java:90)  
 at org.jetbrains.jet.codegen.MemberCodegen.genClassOrObject(MemberCodegen.java:171)  
 at org.jetbrains.jet.codegen.PackageCodegen.generateClassOrObject(PackageCodegen.java:385)  
 at org.jetbrains.jet.codegen.PackageCodegen.generate(PackageCodegen.java:299)  
 at org.jetbrains.jet.codegen.PackageCodegen.generate(PackageCodegen.java:207)  
 at org.jetbrains.jet.codegen.KotlinCodegenFacade.generatePackage(KotlinCodegenFacade.java:80)  
 at org.jetbrains.jet.codegen.KotlinCodegenFacade.compileCorrectFiles(KotlinCodegenFacade.java:67)  
 at org.jetbrains.jet.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.generate(KotlinToJVMBytecodeCompiler.java:349)  
 at org.jetbrains.jet.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules(KotlinToJVMBytecodeCompiler.java:138)  
 at org.jetbrains.jet.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.java:143)  
 at org.jetbrains.jet.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.java:53)  
 at org.jetbrains.jet.cli.common.CLICompiler.exec(CLICompiler.java:139)  
 at org.jetbrains.jet.cli.common.CLICompiler.exec(CLICompiler.java:125)  
 at org.jetbrains.jet.cli.common.CLICompiler.exec(CLICompiler.java:57)  
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)  
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
 at java.lang.reflect.Method.invoke(Method.java:597)  
 at org.jetbrains.jet.compiler.runner.CompilerRunnerUtil.invokeExecMethod(CompilerRunnerUtil.java:129)  
 at org.jetbrains.jet.compiler.runner.KotlinCompilerRunner.execCompiler(KotlinCompilerRunner.java:112)  
 at org.jetbrains.jet.compiler.runner.KotlinCompilerRunner.access$000(KotlinCompilerRunner.java:40)  
 at org.jetbrains.jet.compiler.runner.KotlinCompilerRunner$1.fun(KotlinCompilerRunner.java:95)  
 at org.jetbrains.jet.compiler.runner.KotlinCompilerRunner$1.fun(KotlinCompilerRunner.java:92)  
 at org.jetbrains.jet.compiler.runner.CompilerRunnerUtil.outputCompilerMessagesAndHandleExitCode(CompilerRunnerUtil.java:138)  
 at org.jetbrains.jet.compiler.runner.KotlinCompilerRunner.runCompiler(KotlinCompilerRunner.java:92)  
 at org.jetbrains.jet.compiler.runner.KotlinCompilerRunner.runK2JvmCompiler(KotlinCompilerRunner.java:58)  
 at org.jetbrains.jet.jps.build.KotlinBuilder.build(KotlinBuilder.java:209)  
 at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1100)  
 at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:814)  
 at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:862)  
 at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:777)  
 at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:600)  
 at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:352)  
 at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:184)  
 at org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:129)  
 at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:224)  
 at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:113)  
 at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler$1.run(BuildMain.java:133)  
 at org.jetbrains.jps.service.impl.SharedThreadPoolImpl$1.run(SharedThreadPoolImpl.java:41)  
 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)  
 at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)  
 at java.util.concurrent.FutureTask.run(FutureTask.java:138)  
 at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)  
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)  
 at java.lang.Thread.run(Thread.java:662)  
Caused by: java.lang.ArrayIndexOutOfBoundsException: 2  
 at org.jetbrains.org.objectweb.asm.Frame.merge(Frame.java:1397)  
 at org.jetbrains.org.objectweb.asm.Frame.merge(Frame.java:1374)  
 at org.jetbrains.org.objectweb.asm.MethodWriter.visitMaxs(MethodWriter.java:1475)  
 at org.jetbrains.jet.codegen.FunctionCodegen.endVisit(FunctionCodegen.java:399)  
 … 52 more

---

<div class="post-metadata">

**Author:** ![geevee](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/geevee/32/1475_2.png) [@geevee](https://discuss.kotlinlang.org/u/geevee)\
**Post date:** [July 9, 2014, 11:10am UTC](https://discuss.kotlinlang.org/t/wrong-code-generated-compile-error/557/2 "2014-07-09T11:10:15Z")

</div>

It is a bug. Please report bugs to [our issue tracker](http://youtrack.jetbrains.com/issues/KT). Thank you.

---

<div class="post-metadata">

**Author:** ![geevee](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/geevee/32/1475_2.png) [@geevee](https://discuss.kotlinlang.org/u/geevee)\
**Post date:** [July 9, 2014, 11:22am UTC](https://discuss.kotlinlang.org/t/wrong-code-generated-compile-error/557/3 "2014-07-09T11:22:44Z")

</div>

Also, rule of thumb is that if compiler or plugin throws exception, it is always a bug.

---

<div class="post-metadata">

**Author:** ![geevee](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/geevee/32/1475_2.png) [@geevee](https://discuss.kotlinlang.org/u/geevee)\
**Post date:** [July 9, 2014, 12:56pm UTC](https://discuss.kotlinlang.org/t/wrong-code-generated-compile-error/557/4 "2014-07-09T12:56:06Z")

</div>

Actually, it is a side effect of known bug: [KT-4325](http://youtrack.jetbrains.com/issue/KT-4325). The problem is that you do "+=" on Int property adding Long value. To make your code compilable, either declare window as Long, or size in DataSample as Int, or convert size to Int (by calling toInt()) before plus-assign.

---

<div class="post-metadata">

**Author:** ![Eabin](https://avatars.discourse-cdn.com/v4/letter/e/e19adc/32.png) [@Eabin](https://discuss.kotlinlang.org/u/Eabin)\
**Post date:** [July 9, 2014, 5:03pm UTC](https://discuss.kotlinlang.org/t/wrong-code-generated-compile-error/557/5 "2014-07-09T17:03:52Z")

</div>

thanks, that did the trick! it was not easy to spot for me :)

---

<div class="post-metadata">

**Author:** ![geevee](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/geevee/32/1475_2.png) [@geevee](https://discuss.kotlinlang.org/u/geevee)\
**Post date:** [July 10, 2014, 9:30am UTC](https://discuss.kotlinlang.org/t/wrong-code-generated-compile-error/557/6 "2014-07-10T09:30:41Z")

</div>

Was not easy for me, either :) When you encounter problems like this, you can try to remove and simplify different parts of code and check if bug is still reproducible. Also, exception usually contains hint about location in file where you can look for a problem (it's not always exact line, but usually it shows relevant function).

---

<div class="post-metadata">

**Author:** ![maidaragi1919](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/maidaragi1919/32/5423_2.png) [@maidaragi1919](https://discuss.kotlinlang.org/u/maidaragi1919)\
**Post date:** [August 10, 2018, 5:31am UTC](https://discuss.kotlinlang.org/t/wrong-code-generated-compile-error/557/7 "2018-08-10T05:31:54Z")

</div>

I am also started getting error message and I couldn’t able to run my code either in real device or emulator

**Kotlin compiler**  
e: org.jetbrains.kotlin.codegen.CompilationException: Back-end (JVM) Internal error: wrong code generated

**app:compileDebugKotlin**  
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ‘:app:compileDebugKotlin’.  
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)  
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)  
at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)  
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)  
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)  
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:60)  
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:97)  
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:87)  
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)  
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)  
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)  
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)  
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)  
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)  
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)  
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)  
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)  
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)  
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241)  
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)  
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)  
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)  
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)  
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)  
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:626)  
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:581)  
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)  
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)  
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)  
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)  
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)  
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)  
at java.lang.Thread.run(Thread.java:748)  
Caused by: org.gradle.api.GradleException: Compilation error. See log for more details  
at org.jetbrains.kotlin.gradle.tasks.TasksUtilsKt.throwGradleExceptionIfError(tasksUtils.kt:16)  
at org.jetbrains.kotlin.gradle.tasks.KotlinCompile.processCompilerExitCode(Tasks.kt:411)  
at org.jetbrains.kotlin.gradle.tasks.KotlinCompile.callCompiler$kotlin\_gradle\_plugin(Tasks.kt:385)  
at org.jetbrains.kotlin.gradle.tasks.KotlinCompile.callCompiler$kotlin\_gradle\_plugin(Tasks.kt:253)  
at org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile.execute(Tasks.kt:215)  
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)  
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
at java.lang.reflect.Method.invoke(Method.java:498)  
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)  
at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:46)  
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)  
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)  
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:121)  
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)  
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)  
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)  
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)  
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:110)  
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)  
… 32 more
