Open marks0mmers opened 3 years ago
Here is the stack trace from compiler error
java.lang.IllegalStateException: IdSignature clash: public org.marks0mmers.models/PokemonAPIResponse|null[0]; Existed declaration CLASS CLASS name:PokemonAPIResponse modality:FINAL visibility:public [data] superTypes:[kotlin.Any] clashed with new CLASS CLASS name:PokemonAPIResponse modality:FINAL visibility:public [data] superTypes:[kotlin.Any]
at org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsUniqIdClashTracker.commit(JsDeclarationTable.kt:35)
at org.jetbrains.kotlin.backend.common.serialization.GlobalDeclarationTable.computeSignatureByDeclaration(DeclarationTable.kt:46)
at org.jetbrains.kotlin.backend.common.serialization.DeclarationTable.computeSignatureByDeclaration(DeclarationTable.kt:74)
at org.jetbrains.kotlin.backend.common.serialization.DeclarationTable.signatureByDeclaration(DeclarationTable.kt:83)
at org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureSerializer.composeContainerIdSignature(IdSignatureSerializer.kt:105)
at org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureSerializer.access$composeContainerIdSignature(IdSignatureSerializer.kt:19)
at org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureSerializer$composeFileLocalIdSignature$2.invoke(IdSignatureSerializer.kt:152)
at org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureSerializer$composeFileLocalIdSignature$2.invoke(IdSignatureSerializer.kt:120)
at org.jetbrains.kotlin.backend.common.serialization.DeclarationTable.privateDeclarationSignature(DeclarationTable.kt:79)
at org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureSerializer.composeFileLocalIdSignature(IdSignatureSerializer.kt:120)
at org.jetbrains.kotlin.backend.common.serialization.DeclarationTable.computeSignatureByDeclaration(DeclarationTable.kt:73)
at org.jetbrains.kotlin.backend.common.serialization.DeclarationTable.signatureByDeclaration(DeclarationTable.kt:83)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.protoIdSignature(IrFileSerializer.kt:237)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeIrSymbol(IrFileSerializer.kt:291)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeSimpleType(IrFileSerializer.kt:320)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeIrTypeData(IrFileSerializer.kt:355)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeIrType(IrFileSerializer.kt:417)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeIrTypeProjection(IrFileSerializer.kt:307)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeTypeArgument(IrFileSerializer.kt:312)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeSimpleType(IrFileSerializer.kt:326)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeIrTypeData(IrFileSerializer.kt:355)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeIrType(IrFileSerializer.kt:417)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeExpression(IrFileSerializer.kt:924)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeReturn(IrFileSerializer.kt:666)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeExpression(IrFileSerializer.kt:952)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeStatement(IrFileSerializer.kt:987)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeBlockBody(IrFileSerializer.kt:426)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeStatement(IrFileSerializer.kt:990)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeIrStatementBody(IrFileSerializer.kt:163)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeIrFunctionBase(IrFileSerializer.kt:1062)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeIrFunction(IrFileSerializer.kt:1074)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeDeclaration(IrFileSerializer.kt:1206)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeIrClass(IrFileSerializer.kt:1144)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeDeclaration(IrFileSerializer.kt:1214)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeIrClass(IrFileSerializer.kt:1144)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeDeclaration(IrFileSerializer.kt:1214)
at org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer.serializeIrFile(IrFileSerializer.kt:1304)
at org.jetbrains.kotlin.backend.common.serialization.IrModuleSerializer.serializeIrFile(IrModuleSerializer.kt:28)
at org.jetbrains.kotlin.backend.common.serialization.IrModuleSerializer.serializedIrModule(IrModuleSerializer.kt:35)
at org.jetbrains.kotlin.ir.backend.js.KlibKt.serializeModuleIntoKlib(klib.kt:496)
at org.jetbrains.kotlin.ir.backend.js.KlibKt.generateKLib(klib.kt:184)
at org.jetbrains.kotlin.cli.js.K2JsIrCompiler.doExecute(K2JsIrCompiler.kt:194)
at org.jetbrains.kotlin.cli.js.K2JSCompiler.doExecute(K2JSCompiler.java:181)
at org.jetbrains.kotlin.cli.js.K2JSCompiler.doExecute(K2JSCompiler.java:74)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:88)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:44)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:98)
at org.jetbrains.kotlin.incremental.IncrementalJsCompilerRunner.runCompiler(IncrementalJsCompilerRunner.kt:178)
at org.jetbrains.kotlin.incremental.IncrementalJsCompilerRunner.runCompiler(IncrementalJsCompilerRunner.kt:75)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileIncrementally(IncrementalCompilerRunner.kt:286)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl$rebuild(IncrementalCompilerRunner.kt:99)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl(IncrementalCompilerRunner.kt:114)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:74)
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile$default(IncrementalCompilerRunner.kt:65)
at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execJsIncrementalCompiler(CompileServiceImpl.kt:550)
at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execJsIncrementalCompiler(CompileServiceImpl.kt:96)
at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1747)
Can confirm the same issue, any class marked as @Serializable
will cause the exception.
@Serializable
class SerializationBug(val value: String)
A workaround for now is creating a module without Compose that has your serializable classes, and then the Compose module without the Kotlinx Serialization plugin can depend on that module.
I haven't tested everything yet, but it works for simple serialization/deserialization.
I've had issues with Compose removing things added by my compiler plugin, as well as breaking symbol and IdSignature comparison, see https://issuetracker.google.com/issues/185609826?pli=1
I'm still having this issue with latest versions: Jetbrains Compose 0.5.0-build222 Kotlin 1.5.10 kotlinx.serialization 1.2.1
And I just bumped into this as well.
@Serializable data class UpdateStatistics(val urlString: String, val updateNumber: Int = 0)
Leads to java.lang.IllegalStateException: IdSignature clash: public domain/UpdateStatistics.$serializer|null[0]; Existed declaration CLASS OBJECT name:$serializer modality:FINAL visibility:public superTypes:[kotlinx.serialization.internal.GeneratedSerializer<domain.UpdateStatistics>] clashed with new CLASS OBJECT name:$serializer modality:FINAL visibility:public superTypes:[kotlinx.serialization.internal.GeneratedSerializer<domain.UpdateStatistics>]
I'm on:
Jetbrains Compose 0.5.0-build222 Kotlin 1.5.10 kotlinx.serialization 1.2.1
Still having the same issue:
Jetbrains Compose 0.5.0-build243 Kotlin:1.5.10 kotlinx.serialization 1.2.1
Is there any plan to fix this soon?
Looks like this is a longstanding issue, also filed over at the compose repo: https://github.com/JetBrains/compose-jb/issues/738
I think most compose-related issues should be fixed with 1.8.0, but I'm not entirely sure
Describe the bug When working with Serialization within the new Compose for Web library, I get a Compiler Error on trying to define Serializable data classes to interact with the public Pokemon API
To Reproduce Attach a code snippet or test data if possible.
models.kt
build.gradle.kts
Expected behavior Program to compile and be able to properly serialize these two classes
Environment