Kotlin-native: IrFunctionImp not in vtable of IrClassImpl error in 1.3.31

Created on 1 May 2019  路  7Comments  路  Source: JetBrains/kotlin-native

Minimal repro:

import kotlin.text.Regex

val r = Regex("[0-9]+")

Assuming a file with that code is called test.kt (using konanc from the 1.2.1/1.3.31 release):

konanc -p framework test.kt -o test

That generates:

error: compilation failed: org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl@2933669e not in vtable of org.jetbrains.kotlin.ir.declarations.impl.IrClassImpl@7239f4ba

 * Source files: test.kt
 * Compiler version info: Konan: 1.2.1 / Kotlin: 1.3.31
 * Output kind: FRAMEWORK

exception: java.lang.Error: org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl@2933669e not in vtable of org.jetbrains.kotlin.ir.declarations.impl.IrClassImpl@7239f4ba
    at org.jetbrains.kotlin.backend.konan.descriptors.ClassVtablesBuilder.vtableIndex(ClassVtablesBuilder.kt:160)
    at org.jetbrains.kotlin.backend.konan.llvm.FunctionGenerationContext.lookupVirtualImpl(CodeGenerator.kt:656)
    at org.jetbrains.kotlin.backend.konan.llvm.objcexport.ObjCExportCodeGeneratorKt$generateObjCImp$1.invoke(ObjCExportCodeGenerator.kt:528)
    at org.jetbrains.kotlin.backend.konan.llvm.objcexport.ObjCExportCodeGeneratorKt$generateObjCImp$1.invoke(ObjCExportCodeGenerator.kt)
    at org.jetbrains.kotlin.backend.konan.llvm.objcexport.ObjCExportCodeGeneratorKt.generateObjCImp(ObjCExportCodeGenerator.kt:615)
    at org.jetbrains.kotlin.backend.konan.llvm.objcexport.ObjCExportCodeGeneratorKt.generateObjCImp(ObjCExportCodeGenerator.kt:524)
    at org.jetbrains.kotlin.backend.konan.llvm.objcexport.ObjCExportCodeGeneratorKt.createMethodVirtualAdapter(ObjCExportCodeGenerator.kt:821)
    at org.jetbrains.kotlin.backend.konan.llvm.objcexport.ObjCExportCodeGeneratorKt.createTypeAdapter(ObjCExportCodeGenerator.kt:967)
    at org.jetbrains.kotlin.backend.konan.llvm.objcexport.ObjCExportCodeGeneratorKt.access$createTypeAdapter(ObjCExportCodeGenerator.kt:1)
    at org.jetbrains.kotlin.backend.konan.llvm.objcexport.ObjCExportCodeGenerator.emitRtti$backend_native_compiler(ObjCExportCodeGenerator.kt:169)
    at org.jetbrains.kotlin.backend.konan.objcexport.ObjCExport.produce$backend_native_compiler(ObjCExport.kt:67)
    at org.jetbrains.kotlin.backend.konan.llvm.CodeGeneratorVisitor.visitModuleFragment(IrToBitcode.kt:317)
    at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitModuleFragment(IrElementVisitorVoid.kt:28)
    at org.jetbrains.kotlin.backend.konan.llvm.CodeGeneratorVisitor.visitModuleFragment(IrToBitcode.kt:201)
    at org.jetbrains.kotlin.backend.konan.llvm.CodeGeneratorVisitor.visitModuleFragment(IrToBitcode.kt:201)
    at org.jetbrains.kotlin.ir.declarations.impl.IrModuleFragmentImpl.accept(IrModuleFragmentImpl.kt:42)
    at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoidKt.acceptVoid(IrElementVisitorVoid.kt:258)
    at org.jetbrains.kotlin.backend.konan.llvm.BitcodePhasesKt$codegenPhase$1.invoke(BitcodePhases.kt:134)
    at org.jetbrains.kotlin.backend.konan.llvm.BitcodePhasesKt$codegenPhase$1.invoke(BitcodePhases.kt)
    at org.jetbrains.kotlin.backend.konan.KonanLoweringPhasesKt$makeKonanModuleOpPhase$1.invoke(KonanLoweringPhases.kt:55)
    at org.jetbrains.kotlin.backend.konan.KonanLoweringPhasesKt$makeKonanModuleOpPhase$1.invoke(KonanLoweringPhases.kt:53)
    at org.jetbrains.kotlin.backend.common.phaser.AbstractNamedPhaseWrapper$runBody$1.invoke(CompilerPhase.kt:91)
    at org.jetbrains.kotlin.backend.common.phaser.CompilerPhaseKt.downlevel(CompilerPhase.kt:18)
    at org.jetbrains.kotlin.backend.common.phaser.AbstractNamedPhaseWrapper.runBody(CompilerPhase.kt:90)
    at org.jetbrains.kotlin.backend.common.phaser.AbstractNamedPhaseWrapper.invoke(CompilerPhase.kt:73)
    at org.jetbrains.kotlin.backend.common.phaser.PhaseBuildersKt$then$1.invoke(PhaseBuilders.kt:15)
    at org.jetbrains.kotlin.backend.common.phaser.PhaseBuildersKt$then$1.invoke(PhaseBuilders.kt:14)
    at org.jetbrains.kotlin.backend.common.phaser.PhaseBuildersKt$then$1.invoke(PhaseBuilders.kt:14)
    at org.jetbrains.kotlin.backend.common.phaser.AbstractNamedPhaseWrapper$runBody$1.invoke(CompilerPhase.kt:91)
    at org.jetbrains.kotlin.backend.common.phaser.CompilerPhaseKt.downlevel(CompilerPhase.kt:18)
    at org.jetbrains.kotlin.backend.common.phaser.AbstractNamedPhaseWrapper.runBody(CompilerPhase.kt:90)
    at org.jetbrains.kotlin.backend.common.phaser.AbstractNamedPhaseWrapper.invoke(CompilerPhase.kt:73)
    at org.jetbrains.kotlin.backend.common.phaser.PhaseBuildersKt$then$1.invoke(PhaseBuilders.kt:15)
    at org.jetbrains.kotlin.backend.common.phaser.PhaseBuildersKt$then$1.invoke(PhaseBuilders.kt:14)
    at org.jetbrains.kotlin.backend.common.phaser.PhaseBuildersKt$then$1.invoke(PhaseBuilders.kt:14)
    at org.jetbrains.kotlin.backend.common.phaser.PhaseBuildersKt$then$1.invoke(PhaseBuilders.kt:14)
    at org.jetbrains.kotlin.backend.common.phaser.PhaseBuildersKt$then$1.invoke(PhaseBuilders.kt:14)
    at org.jetbrains.kotlin.backend.common.phaser.AbstractNamedPhaseWrapper$runBody$1.invoke(CompilerPhase.kt:91)
    at org.jetbrains.kotlin.backend.common.phaser.CompilerPhaseKt.downlevel(CompilerPhase.kt:18)
    at org.jetbrains.kotlin.backend.common.phaser.AbstractNamedPhaseWrapper.runBody(CompilerPhase.kt:90)
    at org.jetbrains.kotlin.backend.common.phaser.AbstractNamedPhaseWrapper.invoke(CompilerPhase.kt:73)
    at org.jetbrains.kotlin.backend.common.phaser.PhaseBuildersKt$then$1.invoke(PhaseBuilders.kt:15)
    at org.jetbrains.kotlin.backend.common.phaser.PhaseBuildersKt$then$1.invoke(PhaseBuilders.kt:14)
    at org.jetbrains.kotlin.backend.common.phaser.AbstractNamedPhaseWrapper$runBody$1.invoke(CompilerPhase.kt:91)
    at org.jetbrains.kotlin.backend.common.phaser.CompilerPhaseKt.downlevel(CompilerPhase.kt:18)
    at org.jetbrains.kotlin.backend.common.phaser.AbstractNamedPhaseWrapper.runBody(CompilerPhase.kt:90)
    at org.jetbrains.kotlin.backend.common.phaser.AbstractNamedPhaseWrapper.invoke(CompilerPhase.kt:73)
    at org.jetbrains.kotlin.backend.common.phaser.CompilerPhaseKt.invokeToplevel(CompilerPhase.kt:33)
    at org.jetbrains.kotlin.backend.konan.KonanDriverKt.runTopLevelPhases(KonanDriver.kt:30)
    at org.jetbrains.kotlin.cli.bc.K2Native.doExecute(K2Native.kt:78)
    at org.jetbrains.kotlin.cli.bc.K2Native.doExecute(K2Native.kt:35)
    at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:84)
    at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:42)
    at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:103)
    at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:81)
    at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:49)
    at org.jetbrains.kotlin.cli.common.CLITool$Companion.doMainNoExit(CLITool.kt:214)
    at org.jetbrains.kotlin.cli.common.CLITool$Companion.doMain(CLITool.kt:206)
    at org.jetbrains.kotlin.cli.bc.K2Native$Companion$main$1.invoke(K2Native.kt:217)
    at org.jetbrains.kotlin.cli.bc.K2Native$Companion$main$1.invoke(K2Native.kt:208)
    at org.jetbrains.kotlin.konan.util.UtilKt.profileIf(Util.kt:39)
    at org.jetbrains.kotlin.konan.util.UtilKt.profile(Util.kt:33)
    at org.jetbrains.kotlin.cli.bc.K2Native$Companion.main(K2Native.kt:210)
    at org.jetbrains.kotlin.cli.bc.K2NativeKt.main(K2Native.kt:296)
    at org.jetbrains.kotlin.cli.utilities.MainKt.main(main.kt:16)

All 7 comments

New ticket because #2865 is closed as fixed in 1.3.31

You can workaround it by marking the variable as internal (assuming you don't need to expose the variable)

I'm getting this error, but I'm not using Regex that I know of. Is this issue specific to Regex?

Ah nevermind, my problem and solution were described at https://github.com/JetBrains/kotlin-native/issues/2865#issuecomment-484108164 (I'm on Kotlin 1.3.30).

Thanks. Already fixed in 1.3.40 with #2860.

@SvyatoslavScherbina thank you, any thoughts when 1.3.40 will be available?

Early access preview 1 has just been released.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

nvlizlo picture nvlizlo  路  4Comments

jonnyzzz picture jonnyzzz  路  4Comments

talanov picture talanov  路  3Comments

tarek360 picture tarek360  路  4Comments

9468305 picture 9468305  路  3Comments