When building production version of one of my Kotl...
# eap
r
When building production version of one of my Kotlin/JS apps with 2.4.20-RC I have something that could be a compiler error. More in 🧵
✅ 1
The error looks like this:
Copy code
> Task :compileProductionExecutableKotlinJs FAILED
e: java.lang.IllegalStateException: Internal error: cannot find external signature 'ic#57:com.example/MODE.Companion|null[0]-1' for name 'Companion_getInstance' in module kotlin_com_example_todomvc_ballast
        at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.CrossModuleDependenciesResolver.resolveCrossModuleDependencies(JsIrProgramFragment.kt:149)
        at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.JsIrProgram.asCrossModuleDependencies(JsIrProgramFragment.kt:102)
        at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrModuleToJsTransformerKt.generateMultiWrappedModuleBody(IrModuleToJsTransformer.kt:578)
        at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrModuleToJsTransformerKt.access$generateMultiWrappedModuleBody(IrModuleToJsTransformer.kt:1)
        at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrModuleToJsTransformer.generateJsCode(IrModuleToJsTransformer.kt:288)
        at org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrModuleToJsTransformer.generateModule(IrModuleToJsTransformer.kt:211)
        at org.jetbrains.kotlin.cli.pipeline.web.js.JsCodegenPipelinePhase.runCodegen(JsCodegenPipelinePhase.kt:34)
        at org.jetbrains.kotlin.cli.pipeline.web.js.JsCodegenPipelinePhase.executePhase(JsCodegenPipelinePhase.kt:25)
        at org.jetbrains.kotlin.cli.pipeline.web.js.JsCodegenPipelinePhase.executePhase(JsCodegenPipelinePhase.kt:18)
        at org.jetbrains.kotlin.cli.pipeline.PipelinePhaseKt.executePhaseIsolatedWithActions(PipelinePhase.kt:94)
        at org.jetbrains.kotlin.cli.pipeline.web.js.JsBackendPipelinePhase.compileNonIncrementally(JsBackendPipelinePhase.kt:74)
        at org.jetbrains.kotlin.cli.pipeline.web.js.JsBackendPipelinePhase.compileNonIncrementally(JsBackendPipelinePhase.kt:28)
        at org.jetbrains.kotlin.cli.pipeline.web.WebBackendPipelinePhase.executePhase(WebBackendPipelinePhase.kt:54)
        at org.jetbrains.kotlin.cli.pipeline.web.WebBackendPipelinePhase.executePhase(WebBackendPipelinePhase.kt:29)
        at org.jetbrains.kotlin.cli.pipeline.PipelinePhase.phaseBody(PipelinePhase.kt:60)
        at org.jetbrains.kotlin.cli.pipeline.PipelinePhase.phaseBody(PipelinePhase.kt:50)
        at org.jetbrains.kotlin.config.phaser.NamedCompilerPhase.invoke(CompilerPhase.kt:102)
        at org.jetbrains.kotlin.backend.common.phaser.CompositePhase.invoke(PhaseBuilders.kt:22)
        at org.jetbrains.kotlin.config.phaser.CompilerPhaseKt.invokeToplevel(CompilerPhase.kt:53)
        at org.jetbrains.kotlin.cli.pipeline.AbstractCliPipeline.runPhasedPipeline(AbstractCliPipeline.kt:134)
        at org.jetbrains.kotlin.cli.pipeline.AbstractCliPipeline.executeAndReturnPipeLineArtifact(AbstractCliPipeline.kt:88)
        at org.jetbrains.kotlin.cli.pipeline.AbstractCliPipeline.executeAndReturnPipeLineArtifact$default(AbstractCliPipeline.kt:48)
        at org.jetbrains.kotlin.cli.pipeline.AbstractCliPipeline.execute(AbstractCliPipeline.kt:39)
        at org.jetbrains.kotlin.cli.js.K2JSCompiler.doExecutePhased(K2JSCompiler.kt:48)
        at org.jetbrains.kotlin.cli.js.K2JSCompiler.doExecutePhased(K2JSCompiler.kt:27)
        at org.jetbrains.kotlin.cli.common.CLICompiler.exec(CLICompiler.kt:146)
        at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1949)
        at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:935)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
        at java.base/java.lang.reflect.Method.invoke(Method.java:565)
        at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:351)
        at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:166)
        at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:543)
        at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:744)
        at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:623)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)
        at java.base/java.lang.Thread.run(Thread.java:1474)
The development version runs fine.
The code that is causing this is very simple:
Copy code
@Serializable
enum class MODE {
    ALL,
    ACTIVE,
    COMPLETED
}
Removing
@Serializable
fixes the issue.
It's definitely a compiler bug. I've reproduced the issue and it's the whole application code required:
Copy code
package com.example

import kotlinx.serialization.Serializable

@Serializable
enum class MODE {
    ALL
}

fun main() {
    println(MODE.ALL)
}
Kotlin 2.4.20-RC, kotlinx.serialization 1.11.0 and no other dependencies. I'll fill the issue.
d
cc @Artem Kobzar
👀 1