Created
April 29, 2023 20:09
-
-
Save chumpa/a382dca87a87503f0ca4cbb527a1eea4 to your computer and use it in GitHub Desktop.
kotlinx.serialization 1.5 + xmlutil 0.85 compilation issue
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package karlutka.parsers.pi | |
import kotlinx.serialization.Serializable | |
import kotlinx.serialization.decodeFromString | |
import kotlinx.serialization.modules.SerializersModule | |
import nl.adaptivity.xmlutil.serialization.XML | |
import nl.adaptivity.xmlutil.serialization.XmlElement | |
import nl.adaptivity.xmlutil.serialization.XmlSerialName | |
import nl.adaptivity.xmlutil.serialization.XmlValue | |
class Hm { | |
companion object { | |
private val hmxml = SerializersModule { | |
// polymorphic(Any::class) { | |
// subclass(Instance::class, serializer()) | |
// subclass(String2::class, serializer()) | |
// } | |
} | |
val hmserializer = XML(hmxml) { | |
autoPolymorphic = true | |
} | |
fun parseInstance(sxml: String): Instance { | |
return hmserializer.decodeFromString(sxml) | |
} | |
} | |
@Serializable | |
@XmlSerialName("instance", "", "") | |
class Instance( | |
val typeid: String, | |
@XmlSerialName("attribute", "", "") | |
val attribute: List<Attribute> = listOf(), | |
) | |
@Serializable | |
class Attribute( | |
var isleave: Boolean = true, | |
var leave_typeid: String? = null, | |
var name: String, | |
@XmlElement(true) val value: List<Value> = listOf(), | |
) | |
@Serializable | |
@XmlSerialName("value", "", "") | |
class Value( | |
var index: Int = 0, | |
var isnull: Boolean = false, | |
// Value внутри себя содержит или String или Instance | |
@XmlElement(true) | |
val instance: Instance? = null, | |
@XmlValue | |
val string: String? = null | |
) | |
} | |
/* | |
Пример данных | |
<instance typeid="com.sap.aii.utilxi.hmi.core.msg.HmiRequest"> | |
<attribute isleave="true" leave_typeid="string" name="ClientLanguage"> | |
<value index="0" isnull="false">EN</value> | |
</attribute> | |
<attribute isleave="false" name="MethodInput"> | |
<value index="0" isnull="false"> | |
<instance typeid="com.sap.aii.utilxi.hmi.api.HmiMethodInput"> | |
<attribute isleave="false" name="Parameters"> | |
<value index="0" isnull="false"> | |
<instance typeid="com.sap.aii.utilxi.hmi.core.gdi2.EntryStringString"> | |
<attribute isleave="true" leave_typeid="string" name="Key"> | |
<value index="0" isnull="false">mode</value> | |
</attribute> | |
<attribute isleave="true" leave_typeid="string" name="Value"> | |
<value index="0" isnull="false">SELECT</value> | |
</attribute> | |
</instance> | |
</value> | |
<value index="1" isnull="false"> | |
<instance typeid="com.sap.aii.utilxi.hmi.core.gdi2.EntryStringString"> | |
<attribute isleave="true" leave_typeid="string" name="Key"> | |
<value index="0" isnull="false">hitlist</value> | |
</attribute> | |
<attribute isleave="true" leave_typeid="string" name="Value"> | |
<value index="0" isnull="false">Time</value> | |
</attribute> | |
</instance> | |
</value> | |
</attribute> | |
</instance> | |
</value> | |
</attribute> | |
</instance> | |
Ошибка | |
> Task :compileKotlin FAILED | |
e: org.jetbrains.kotlin.backend.common.BackendException: Backend Internal error: Exception during IR lowering | |
File being compiled: C:/workspace/rsug.io/karlutka/src/main/kotlin/karlutka/parsers/pi/Hm.kt | |
The root cause java.lang.RuntimeException was thrown at: org.jetbrains.kotlin.backend.jvm.codegen.FunctionCodegen.generate(FunctionCodegen.kt:49) | |
at org.jetbrains.kotlin.backend.common.CodegenUtil.reportBackendException(CodegenUtil.kt:241) | |
at org.jetbrains.kotlin.backend.common.CodegenUtil.reportBackendException$default(CodegenUtil.kt:236) | |
at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invokeSequential(performByIrFile.kt:68) | |
at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invoke(performByIrFile.kt:55) | |
at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invoke(performByIrFile.kt:41) | |
at org.jetbrains.kotlin.backend.common.phaser.NamedCompilerPhase.invoke(CompilerPhase.kt:96) | |
at org.jetbrains.kotlin.backend.common.phaser.CompositePhase.invoke(PhaseBuilders.kt:29) | |
at org.jetbrains.kotlin.backend.common.phaser.NamedCompilerPhase.invoke(CompilerPhase.kt:96) | |
at org.jetbrains.kotlin.backend.common.phaser.CompilerPhaseKt.invokeToplevel(CompilerPhase.kt:43) | |
at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.invokeCodegen(JvmIrCodegenFactory.kt:312) | |
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.runCodegen(KotlinToJVMBytecodeCompiler.kt:348) | |
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli(KotlinToJVMBytecodeCompiler.kt:123) | |
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli$default(KotlinToJVMBytecodeCompiler.kt:47) | |
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:167) | |
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:53) | |
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:101) | |
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:47) | |
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:101) | |
at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:485) | |
at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:131) | |
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.doCompile(IncrementalCompilerRunner.kt:424) | |
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl(IncrementalCompilerRunner.kt:360) | |
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileNonIncrementally(IncrementalCompilerRunner.kt:242) | |
at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:98) | |
at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execIncrementalCompiler(CompileServiceImpl.kt:625) | |
at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execIncrementalCompiler(CompileServiceImpl.kt:101) | |
at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1746) | |
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) | |
Caused by: java.lang.RuntimeException: Exception while generating code for: | |
FUN CLASS_STATIC_INITIALIZER name:<clinit> visibility:public/*package*/ modality:FINAL <> () returnType:kotlin.Unit | |
BLOCK_BODY | |
SET_FIELD 'FIELD FIELD_FOR_OBJECT_INSTANCE name:INSTANCE type:karlutka.parsers.pi.Hm.Value.$serializer visibility:public [final,static]' type=kotlin.Unit origin=INITIALIZE_FIELD | |
value: CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in karlutka.parsers.pi.Hm.Value.$serializer' type=karlutka.parsers.pi.Hm.Value.$serializer origin=null | |
BLOCK type=kotlin.Unit origin=SYNTHESIZED_INIT_BLOCK | |
VAR IR_TEMPORARY_VARIABLE name:tmp0_serialDesc type:kotlinx.serialization.internal.PluginGeneratedSerialDescriptor [val] | |
CONSTRUCTOR_CALL 'public constructor <init> (serialName: kotlin.String, generatedSerializer: kotlinx.serialization.internal.GeneratedSerializer<*>?, elementsCount: kotlin.Int) [primary] declared in kotlinx.serialization.internal.PluginGeneratedSerialDescriptor' type=kotlinx.serialization.internal.PluginGeneratedSerialDescriptor origin=null | |
serialName: CONST String type=kotlin.String value="karlutka.parsers.pi.Hm.Value" | |
generatedSerializer: GET_FIELD 'FIELD FIELD_FOR_OBJECT_INSTANCE name:INSTANCE type:karlutka.parsers.pi.Hm.Value.$serializer visibility:public [final,static]' type=karlutka.parsers.pi.Hm.Value.$serializer origin=null | |
elementsCount: CONST Int type=kotlin.Int value=4 | |
CALL 'public final fun addElement (name: kotlin.String, isOptional: kotlin.Boolean): kotlin.Unit declared in kotlinx.serialization.internal.PluginGeneratedSerialDescriptor' type=kotlin.Unit origin=null | |
$this: GET_VAR 'val tmp0_serialDesc: kotlinx.serialization.internal.PluginGeneratedSerialDescriptor [val] declared in karlutka.parsers.pi.Hm.Value.$serializer.<clinit>' type=kotlinx.serialization.internal.PluginGeneratedSerialDescriptor origin=null | |
name: CONST String type=kotlin.String value="index" | |
isOptional: CONST Boolean type=kotlin.Boolean value=true | |
CALL 'public final fun addElement (name: kotlin.String, isOptional: kotlin.Boolean): kotlin.Unit declared in kotlinx.serialization.internal.PluginGeneratedSerialDescriptor' type=kotlin.Unit origin=null | |
$this: GET_VAR 'val tmp0_serialDesc: kotlinx.serialization.internal.PluginGeneratedSerialDescriptor [val] declared in karlutka.parsers.pi.Hm.Value.$serializer.<clinit>' type=kotlinx.serialization.internal.PluginGeneratedSerialDescriptor origin=null | |
name: CONST String type=kotlin.String value="isnull" | |
isOptional: CONST Boolean type=kotlin.Boolean value=true | |
CALL 'public final fun addElement (name: kotlin.String, isOptional: kotlin.Boolean): kotlin.Unit declared in kotlinx.serialization.internal.PluginGeneratedSerialDescriptor' type=kotlin.Unit origin=null | |
$this: GET_VAR 'val tmp0_serialDesc: kotlinx.serialization.internal.PluginGeneratedSerialDescriptor [val] declared in karlutka.parsers.pi.Hm.Value.$serializer.<clinit>' type=kotlinx.serialization.internal.PluginGeneratedSerialDescriptor origin=null | |
name: CONST String type=kotlin.String value="instance" | |
isOptional: CONST Boolean type=kotlin.Boolean value=true | |
CALL 'public final fun pushAnnotation (annotation: kotlin.Annotation): kotlin.Unit declared in kotlinx.serialization.internal.PluginGeneratedSerialDescriptor' type=kotlin.Unit origin=null | |
$this: GET_VAR 'val tmp0_serialDesc: kotlinx.serialization.internal.PluginGeneratedSerialDescriptor [val] declared in karlutka.parsers.pi.Hm.Value.$serializer.<clinit>' type=kotlinx.serialization.internal.PluginGeneratedSerialDescriptor origin=null | |
annotation: CONSTRUCTOR_CALL 'public constructor <init> (value: kotlin.Boolean) declared in nl.adaptivity.xmlutil.serialization.XmlElement.Impl' type=nl.adaptivity.xmlutil.serialization.XmlElement.Impl origin=null | |
value: CONST Boolean type=kotlin.Boolean value=true | |
CALL 'public final fun addElement (name: kotlin.String, isOptional: kotlin.Boolean): kotlin.Unit declared in kotlinx.serialization.internal.PluginGeneratedSerialDescriptor' type=kotlin.Unit origin=null | |
$this: GET_VAR 'val tmp0_serialDesc: kotlinx.serialization.internal.PluginGeneratedSerialDescriptor [val] declared in karlutka.parsers.pi.Hm.Value.$serializer.<clinit>' type=kotlinx.serialization.internal.PluginGeneratedSerialDescriptor origin=null | |
name: CONST String type=kotlin.String value="string" | |
isOptional: CONST Boolean type=kotlin.Boolean value=true | |
CALL 'public final fun pushAnnotation (annotation: kotlin.Annotation): kotlin.Unit declared in kotlinx.serialization.internal.PluginGeneratedSerialDescriptor' type=kotlin.Unit origin=null | |
$this: GET_VAR 'val tmp0_serialDesc: kotlinx.serialization.internal.PluginGeneratedSerialDescriptor [val] declared in karlutka.parsers.pi.Hm.Value.$serializer.<clinit>' type=kotlinx.serialization.internal.PluginGeneratedSerialDescriptor origin=null | |
annotation: CONSTRUCTOR_CALL 'public constructor <init> (value: kotlin.Boolean) declared in nl.adaptivity.xmlutil.serialization.XmlValue.Impl' type=nl.adaptivity.xmlutil.serialization.XmlValue.Impl origin=null | |
value: ERROR_EXPR 'Stub expression for default value of value' type=kotlin.Boolean | |
CALL 'public final fun pushClassAnnotation (a: kotlin.Annotation): kotlin.Unit declared in kotlinx.serialization.internal.PluginGeneratedSerialDescriptor' type=kotlin.Unit origin=null | |
$this: GET_VAR 'val tmp0_serialDesc: kotlinx.serialization.internal.PluginGeneratedSerialDescriptor [val] declared in karlutka.parsers.pi.Hm.Value.$serializer.<clinit>' type=kotlinx.serialization.internal.PluginGeneratedSerialDescriptor origin=null | |
a: CONSTRUCTOR_CALL 'public constructor <init> (namespace: kotlin.String, prefix: kotlin.String, value: kotlin.String) declared in nl.adaptivity.xmlutil.serialization.XmlSerialName.Impl' type=nl.adaptivity.xmlutil.serialization.XmlSerialName.Impl origin=null | |
namespace: CONST String type=kotlin.String value="value" | |
prefix: CONST String type=kotlin.String value="" | |
value: CONST String type=kotlin.String value="" | |
SET_FIELD 'FIELD KOTLINX_SERIALIZATION name:descriptor type:kotlinx.serialization.internal.PluginGeneratedSerialDescriptor visibility:private [final,static]' type=kotlin.Unit origin=null | |
value: GET_VAR 'val tmp0_serialDesc: kotlinx.serialization.internal.PluginGeneratedSerialDescriptor [val] declared in karlutka.parsers.pi.Hm.Value.$serializer.<clinit>' type=kotlinx.serialization.internal.PluginGeneratedSerialDescriptor origin=null | |
at org.jetbrains.kotlin.backend.jvm.codegen.FunctionCodegen.generate(FunctionCodegen.kt:49) | |
at org.jetbrains.kotlin.backend.jvm.codegen.FunctionCodegen.generate$default(FunctionCodegen.kt:41) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ClassCodegen.generateMethodNode(ClassCodegen.kt:408) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ClassCodegen.generateMethod(ClassCodegen.kt:425) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ClassCodegen.generate(ClassCodegen.kt:172) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ClassCodegen.generate(ClassCodegen.kt:181) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ClassCodegen.generate(ClassCodegen.kt:181) | |
at org.jetbrains.kotlin.backend.jvm.FileCodegen.lower(JvmPhases.kt:44) | |
at org.jetbrains.kotlin.backend.common.phaser.FileLoweringPhaseAdapter.invoke(PhaseBuilders.kt:120) | |
at org.jetbrains.kotlin.backend.common.phaser.FileLoweringPhaseAdapter.invoke(PhaseBuilders.kt:116) | |
at org.jetbrains.kotlin.backend.common.phaser.NamedCompilerPhase.invoke(CompilerPhase.kt:96) | |
at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invokeSequential(performByIrFile.kt:65) | |
... 41 more | |
Caused by: java.lang.AssertionError: Unexpected IR element found during code generation. Either code generation for it is not implemented, or it should have been lowered: | |
ERROR_EXPR 'Stub expression for default value of value' type=kotlin.Boolean | |
at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitElement(ExpressionCodegen.kt:852) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitElement(ExpressionCodegen.kt:135) | |
at org.jetbrains.kotlin.ir.visitors.IrElementVisitor$DefaultImpls.visitExpression(IrElementVisitor.kt:156) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitExpression(ExpressionCodegen.kt:135) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitExpression(ExpressionCodegen.kt:135) | |
at org.jetbrains.kotlin.ir.visitors.IrElementVisitor$DefaultImpls.visitErrorExpression(IrElementVisitor.kt:253) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitErrorExpression(ExpressionCodegen.kt:135) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitErrorExpression(ExpressionCodegen.kt:135) | |
at org.jetbrains.kotlin.ir.expressions.IrErrorExpression.accept(IrErrorExpression.kt:21) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.gen(ExpressionCodegen.kt:218) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.generateConstructorArguments(ExpressionCodegen.kt:642) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitConstructorCall(ExpressionCodegen.kt:630) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitConstructorCall(ExpressionCodegen.kt:135) | |
at org.jetbrains.kotlin.ir.expressions.IrConstructorCall.accept(IrConstructorCall.kt:27) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.gen(ExpressionCodegen.kt:218) | |
at org.jetbrains.kotlin.backend.jvm.codegen.IrCallGenerator.genValueAndPut(IrCallGenerator.kt:50) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitCall$handleValueParameter(ExpressionCodegen.kt:500) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitCall(ExpressionCodegen.kt:514) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitCall(ExpressionCodegen.kt:135) | |
at org.jetbrains.kotlin.ir.expressions.IrCall.accept(IrCall.kt:25) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitStatementContainer(ExpressionCodegen.kt:457) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitContainerExpression(ExpressionCodegen.kt:470) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitContainerExpression(ExpressionCodegen.kt:135) | |
at org.jetbrains.kotlin.ir.visitors.IrElementVisitor$DefaultImpls.visitBlock(IrElementVisitor.kt:192) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitBlock(ExpressionCodegen.kt:398) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitBlock(ExpressionCodegen.kt:135) | |
at org.jetbrains.kotlin.ir.expressions.IrBlock.accept(IrBlock.kt:22) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitStatementContainer(ExpressionCodegen.kt:457) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitBlockBody(ExpressionCodegen.kt:461) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.visitBlockBody(ExpressionCodegen.kt:135) | |
at org.jetbrains.kotlin.ir.expressions.IrBlockBody.accept(IrBlockBody.kt:24) | |
at org.jetbrains.kotlin.backend.jvm.codegen.ExpressionCodegen.generate(ExpressionCodegen.kt:241) | |
at org.jetbrains.kotlin.backend.jvm.codegen.FunctionCodegen.doGenerate(FunctionCodegen.kt:120) | |
at org.jetbrains.kotlin.backend.jvm.codegen.FunctionCodegen.generate(FunctionCodegen.kt:45) | |
... 52 more | |
FAILURE: Build failed with an exception. | |
* What went wrong: | |
Execution failed for task ':compileKotlin'. | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment