https://kotlinlang.org logo
#k2-early-adopters
Title
# k2-early-adopters
j

Jilles van Gurp

11/02/2023, 8:59 AM
just updated one of our kotlin-js / fritz2 projects to 1.9.20 and enabled k2. It crashes with this exception: e: java.lang.IllegalStateException: Unknown classifier kind null at org.jetbrains.kotlin.fir.backend.generators.DataClassMembersGenerator$MyDataClassMethodsGenerator$irDataClassMembersGenerator$1.getHashCodeFunctionInfo(DataClassMembersGenerator.kt:132) at org.jetbrains.kotlin.ir.util.DataClassMembersGenerator.getHashCodeOf(DataClassMembersGenerator.kt:241) at org.jetbrains.kotlin.ir.util.DataClassMembersGenerator.getHashCodeOf(DataClassMembersGenerator.kt:238) at org.jetbrains.kotlin.ir.util.DataClassMembersGenerator$MemberFunctionBuilder.getHashCodeOfProperty(DataClassMembersGenerator.kt:195) at org.jetbrains.kotlin.ir.util.DataClassMembersGenerator$MemberFunctionBuilder.generateHashCodeMethodBody(DataClassMembersGenerator.kt:181) at org.jetbrains.kotlin.ir.util.IrBasedDataClassMembersGenerator.generateHashCodeMethod(DataClassMembersGenerator.kt:308) at org.jetbrains.kotlin.fir.backend.generators.DataClassMembersGenerator$MyDataClassMethodsGenerator.generate(DataClassMembersGenerator.kt:194) at org.jetbrains.kotlin.fir.backend.generators.DataClassMembersGenerator.generateDataClassMembers(DataClassMembersGenerator.kt:59) at org.jetbrains.kotlin.fir.backend.Fir2IrConverter.processClassMembers$fir2ir(Fir2IrConverter.kt:231) at org.jetbrains.kotlin.fir.backend.Fir2IrConverter.processMemberDeclaration(Fir2IrConverter.kt:426) at org.jetbrains.kotlin.fir.backend.Fir2IrConverter.processFileAndClassMembers(Fir2IrConverter.kt:182) at org.jetbrains.kotlin.fir.backend.Fir2IrConverter.runSourcesConversion(Fir2IrConverter.kt:86) at org.jetbrains.kotlin.fir.backend.Fir2IrConverter.access$runSourcesConversion(Fir2IrConverter.kt:53) at org.jetbrains.kotlin.fir.backend.Fir2IrConverter$Companion.createModuleFragmentWithSignaturesIfNeeded(Fir2IrConverter.kt:587) at org.jetbrains.kotlin.fir.pipeline.ModuleCompilerAnalyzedOutput.convertToIr(convertToIr.kt:48) at org.jetbrains.kotlin.fir.pipeline.ConvertToIrKt.convertToIrAndActualize(convertToIr.kt:145) at org.jetbrains.kotlin.cli.js.klib.CompilerPipelineKt.transformFirToIr(compilerPipeline.kt:234) at org.jetbrains.kotlin.cli.js.K2JsIrCompiler.processSourceModuleWithK2(K2JsIrCompiler.kt:537) at org.jetbrains.kotlin.cli.js.K2JsIrCompiler.doExecute(K2JsIrCompiler.kt:271) at org.jetbrains.kotlin.cli.js.K2JSCompiler.doExecute(K2JSCompiler.java:181) at org.jetbrains.kotlin.cli.js.K2JSCompiler.doExecute(K2JSCompiler.java:72) at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:104) at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:48) at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:101) at org.jetbrains.kotlin.incremental.IncrementalJsCompilerRunner.runCompiler(IncrementalJsCompilerRunner.kt:218) at org.jetbrains.kotlin.incremental.IncrementalJsCompilerRunner.runCompiler(IncrementalJsCompilerRunner.kt:86) at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.doCompile(IncrementalCompilerRunner.kt:477) at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl(IncrementalCompilerRunner.kt:400) at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileNonIncrementally(IncrementalCompilerRunner.kt:281) at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:125) at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile$default(IncrementalCompilerRunner.kt:109) at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execJsIncrementalCompiler(CompileServiceImpl.kt:579) at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execJsIncrementalCompiler(CompileServiceImpl.kt:105) at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1715) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360) at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200) at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197) at java.base/java.security.AccessController.doPrivileged(AccessController.java:712) at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196) at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:587) at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828) at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:705) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:833) Without k2 it works.
🧵 1
d

dmitriy.novozhilov

11/02/2023, 9:03 AM
Could you please report an issue with some steps to reproduce?
j

Jilles van Gurp

11/02/2023, 9:04 AM
I have no way to reproduce this other than setting k2 to true on this project.
d

dmitriy.novozhilov

11/02/2023, 9:04 AM
Is this project is open-source by any chance?
j

Jilles van Gurp

11/02/2023, 9:16 AM
no, it's our main app. Pretty large code base and no hint of which part of it is the problem.
I'll file a bug for the stack trace of course. Looks like something that shouldn't be happening in any case.
👍 1
Tracked down some more detail with @dmitriy.novozhilov It looks like having properties of type dynamic in data classes is triggering this. This is one of the offending classes:
Copy code
data class Event(
    val type: String,
    val target: dynamic,
    val sourceTarget: dynamic,
    val propagatedFrom: dynamic,
    val layer: dynamic
)
gratitude thank you 3