spxbhuhb / adaptive

Consolidated full-stack application development library for Kotlin
Apache License 2.0
0 stars 0 forks source link

anonymous function in state definition - 2.0.0-RC2 #6

Closed toth-istvan-zoltan closed 1 month ago

toth-istvan-zoltan commented 1 month ago

In 2.0.0-RC2 anonymous functions in the state definition generate an error.

Branch to reproduce: https://github.com/spxbhuhb/adaptive/tree/anonymous-function-in-state-definition

The

        val adapter = server {

            settings {
                inline(
                    "EMAIL_HOST" to "localhost",
                    "EMAIL_PORT" to 2500,
                    "EMAIL_USERNAME" to "noreply@simplexion.hu",
                    "EMAIL_PASSWORD" to "helloworld",
                    "EMAIL_PROTOCOL" to "smtp",
                    "EMAIL_TLS" to false,
                    "EMAIL_AUTH" to true,
                    "EMAIL_RETRY_INTERVAL" to 5,
                    "EMAIL_RETRY_CHECK_INTERVAL" to 5000,
                    "EMAIL_LIVE" to false,
                    "EMAIL_DEBUG" to false,
                    "TEST_EMAIL" to "noreply@simplexion.hu"
                )
            }
       }
org.jetbrains.kotlin.backend.common.BackendException: Backend Internal error: Exception during IR lowering
File being compiled: /Users/tiz/src/adaptive/adaptive-lib/adaptive-email/src/jvmTest/kotlin/hu/simplexion/adaptive/email/worker/EmailWorkerTest.kt
The root cause org.jetbrains.kotlin.backend.common.CompilationException was thrown at: org.jetbrains.kotlin.backend.common.lower.LocalDeclarationsLowering$LocalDeclarationsTransformer.generateNameForLiftedDeclaration$lambda$22(LocalDeclarationsLowering.kt:691)
    at org.jetbrains.kotlin.backend.common.CodegenUtil.reportBackendException(CodegenUtil.kt:253)
    at org.jetbrains.kotlin.backend.common.CodegenUtil.reportBackendException$default(CodegenUtil.kt:236)
    at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invokeSequential(performByIrFile.kt:65)
    at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invoke(performByIrFile.kt:52)
    at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invoke(performByIrFile.kt:38)
    at org.jetbrains.kotlin.backend.common.phaser.NamedCompilerPhase.phaseBody(CompilerPhase.kt:166)
    at org.jetbrains.kotlin.backend.common.phaser.AbstractNamedCompilerPhase.invoke(CompilerPhase.kt:113)
    at org.jetbrains.kotlin.backend.common.phaser.CompositePhase.invoke(PhaseBuilders.kt:29)
    at org.jetbrains.kotlin.backend.common.phaser.CompositePhase.invoke(PhaseBuilders.kt:16)
    at org.jetbrains.kotlin.backend.common.phaser.NamedCompilerPhase.phaseBody(CompilerPhase.kt:166)
    at org.jetbrains.kotlin.backend.common.phaser.AbstractNamedCompilerPhase.invoke(CompilerPhase.kt:113)
    at org.jetbrains.kotlin.backend.common.phaser.CompilerPhaseKt.invokeToplevel(CompilerPhase.kt:62)
    at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.invokeLowerings(JvmIrCodegenFactory.kt:358)
    at org.jetbrains.kotlin.codegen.CodegenFactory.generateModule(CodegenFactory.kt:46)
    at org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory.generateModuleInFrontendIRMode(JvmIrCodegenFactory.kt:433)
    at org.jetbrains.kotlin.cli.jvm.compiler.pipeline.CompilerPipelineKt.generateCodeFromIr(compilerPipeline.kt:241)
    at org.jetbrains.kotlin.cli.jvm.compiler.pipeline.CompilerPipelineKt.compileModulesUsingFrontendIrAndLightTree(compilerPipeline.kt:140)
    at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:155)
    at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:50)
    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.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:453)
    at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:62)
    at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.doCompile(IncrementalCompilerRunner.kt:506)
    at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl(IncrementalCompilerRunner.kt:423)
    at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileNonIncrementally(IncrementalCompilerRunner.kt:301)
    at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:129)
    at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execIncrementalCompiler(CompileServiceImpl.kt:676)
    at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execIncrementalCompiler(CompileServiceImpl.kt:92)
    at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1661)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    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:714)
    at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)
    at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:598)
    at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:844)
    at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:721)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
    at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:720)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: org.jetbrains.kotlin.backend.common.CompilationException: Back-end: Please report this problem https://kotl.in/issue
/Users/tiz/src/adaptive/adaptive-lib/adaptive-email/src/jvmTest/kotlin/hu/simplexion/adaptive/email/worker/EmailWorkerTest.kt:57:30
Problem with `local open class AdaptiveRootEmailWorkerTest1783<in BT : Any?> : AdaptiveFragment<BT> {
  constructor(adapter: AdaptiveAdapter<BT>, parent: AdaptiveFragment<BT>?, index: Int) /* primary */ {
    super/*AdaptiveFragment*/<AdaptiveFragment<BT>>(adapter = adapter, parent = parent, index = index, stateSize = 0)
    /* <init>() */

  }

  init {
  }

  override fun genBuild(parent: AdaptiveFragment<BT>, declarationIndex: Int): AdaptiveFragment<BT>? {
    val tmp0: AdaptiveFragment<BT> = when {
      EQEQ(arg0 = declarationIndex, arg1 = 0) -> AdaptiveSequence<BT>(adapter = <this>.<get-adapter>(), parent = parent, index = declarationIndex)
      EQEQ(arg0 = declarationIndex, arg1 = 1) -> AdaptiveWorker<BT>(adapter = <this>.<get-adapter>(), parent = parent, index = declarationIndex)
      EQEQ(arg0 = declarationIndex, arg1 = 2) -> AdaptiveStore<BT>(adapter = <this>.<get-adapter>(), parent = parent, index = declarationIndex)
      EQEQ(arg0 = declarationIndex, arg1 = 3) -> AdaptiveStore<BT>(adapter = <this>.<get-adapter>(), parent = parent, index = declarationIndex)
      EQEQ(arg0 = declarationIndex, arg1 = 4) -> AdaptiveWorker<BT>(adapter = <this>.<get-adapter>(), parent = parent, index = declarationIndex)
      EQEQ(arg0 = declarationIndex, arg1 = 5) -> AdaptiveService<BT>(adapter = <this>.<get-adapter>(), parent = parent, index = declarationIndex)
      else -> <this>.invalidIndex(index = declarationIndex)
    }
    tmp0.create()
    return tmp0
  }

  override fun genPatchDescendant(fragment: AdaptiveFragment<BT>) {
    val tmp0: Int = fragment.getCreateClosureDirtyMask()
    val tmp1: Int = fragment.<get-index>()
    when {
      EQEQ(arg0 = tmp1, arg1 = 0) -> fragment.setStateVariable(index = 0, value = { // BLOCK
        val tmp0: IntArray = IntArray(size = 5)
        tmp0.set(index = 0, value = 1)
        tmp0.set(index = 1, value = 2)
        tmp0.set(index = 2, value = 3)
        tmp0.set(index = 3, value = 4)
        tmp0.set(index = 4, value = 5)
        tmp0
      })
      EQEQ(arg0 = tmp1, arg1 = 1) -> { // BLOCK
        when {
          fragment.haveToPatch(closureDirtyMask = tmp0, dependencyMask = 0) -> fragment.setStateVariable(index = 0, value = AdaptiveSupportFunction<BT>(declaringFragment = <this>, receivingFragment = fragment, supportFunctionIndex = 0))
        }
      }
      EQEQ(arg0 = tmp1, arg1 = 2) -> { // BLOCK
        when {
          fragment.haveToPatch(closureDirtyMask = tmp0, dependencyMask = 0) -> fragment.setStateVariable(index = 0, value = AdaptiveSupportFunction<BT>(declaringFragment = <this>, receivingFragment = fragment, supportFunctionIndex = 1))
        }
      }
      EQEQ(arg0 = tmp1, arg1 = 3) -> { // BLOCK
        when {
          fragment.haveToPatch(closureDirtyMask = tmp0, dependencyMask = 0) -> fragment.setStateVariable(index = 0, value = AdaptiveSupportFunction<BT>(declaringFragment = <this>, receivingFragment = fragment, supportFunctionIndex = 2))
        }
      }
      EQEQ(arg0 = tmp1, arg1 = 4) -> { // BLOCK
        when {
          fragment.haveToPatch(closureDirtyMask = tmp0, dependencyMask = 0) -> fragment.setStateVariable(index = 0, value = AdaptiveSupportFunction<BT>(declaringFragment = <this>, receivingFragment = fragment, supportFunctionIndex = 3))
        }
      }
      EQEQ(arg0 = tmp1, arg1 = 5) -> { // BLOCK
        when {
          fragment.haveToPatch(closureDirtyMask = tmp0, dependencyMask = 0) -> fragment.setStateVariable(index = 0, value = AdaptiveSupportFunction<BT>(declaringFragment = <this>, receivingFragment = fragment, supportFunctionIndex = 4))
        }
      }
      else -> <this>.invalidIndex(index = tmp1)
    }
  }

  /* fake */ override fun invoke(supportFunction: AdaptiveSupportFunction, arguments: Array<out Any?>): Any?

  override fun genInvoke(supportFunction: AdaptiveSupportFunction, arguments: Array<out Any?>): Any? {
    val tmp0: Int = supportFunction.<get-supportFunctionIndex>()
    val tmp1: AdaptiveFragment<BT> = supportFunction.<get-receivingFragment>()
    val tmp2: Array<out Any?> = arguments
    return when {
      EQEQ(arg0 = tmp0, arg1 = 0) -> { // BLOCK
        InMemoryDatabase()
      }
      EQEQ(arg0 = tmp0, arg1 = 1) -> { // BLOCK
        EmailTable()
      }
      EQEQ(arg0 = tmp0, arg1 = 2) -> { // BLOCK
        EmailQueue()
      }
      EQEQ(arg0 = tmp0, arg1 = 3) -> { // BLOCK
        EmailWorker()
      }
      EQEQ(arg0 = tmp0, arg1 = 4) -> { // BLOCK
        EmailService()
      }
      else -> <this>.invalidIndex(index = tmp0)
    }
  }

  /* fake */ override suspend fun invokeSuspend(supportFunction: AdaptiveSupportFunction, arguments: Array<out Any?>): Any?

  /* fake */ override suspend fun genInvokeSuspend(supportFunction: AdaptiveSupportFunction, arguments: Array<out Any?>): Any?

  /* fake */ override fun create()

  /* fake */ override fun mount(bridge: AdaptiveBridge<BT>)

  /* fake */ override fun innerMount(bridge: AdaptiveBridge<BT>)

  /* fake */ override fun patch()

  /* fake */ override fun patchExternal()

  /* fake */ override fun patchInternal()

  override fun genPatchInternal() {
    val tmp0: Int = <this>.getThisClosureDirtyMask()
    when {
      <this>.haveToPatch(closureDirtyMask = tmp0, dependencyMask = 0) -> settings(providerFun = { // BLOCK
        local fun <anonymous>($this$settings: DelegatingSettingProvider): Unit? {
          $this$settings.inline(values = { // BLOCK
            val tmp0: Array<out Pair<String, Any?>> = arrayOfNulls<Pair<String, Any?>>(size = 12)
            tmp0.set(index = 0, value = "EMAIL_HOST".to<String, String>(that = "localhost"))
            tmp0.set(index = 1, value = "EMAIL_PORT".to<String, Int>(that = 2500))
            tmp0.set(index = 2, value = "EMAIL_USERNAME".to<String, String>(that = "noreply@simplexion.hu"))
            tmp0.set(index = 3, value = "EMAIL_PASSWORD".to<String, String>(that = "helloworld"))
            tmp0.set(index = 4, value = "EMAIL_PROTOCOL".to<String, String>(that = "smtp"))
            tmp0.set(index = 5, value = "EMAIL_TLS".to<String, Boolean>(that = false))
            tmp0.set(index = 6, value = "EMAIL_AUTH".to<String, Boolean>(that = true))
            tmp0.set(index = 7, value = "EMAIL_RETRY_INTERVAL".to<String, Int>(that = 5))
            tmp0.set(index = 8, value = "EMAIL_RETRY_CHECK_INTERVAL".to<String, Int>(that = 5000))
            tmp0.set(index = 9, value = "EMAIL_LIVE".to<String, Boolean>(that = false))
            tmp0.set(index = 10, value = "EMAIL_DEBUG".to<String, Boolean>(that = false))
            tmp0.set(index = 11, value = "TEST_EMAIL".to<String, String>(that = "noreply@simplexion.hu"))
            tmp0
          })
        }

        <jvm-indy-lambda-metafactory><@ExtensionFunctionType Function1<DelegatingSettingProvider, Unit>>(samMethodType = &error("") /* ERROR: unsupported element type: IrRawFunctionReferenceImpl */
, implMethodReference = EmailWorkerTest::<anonymous>, instantiatedMethodType = &error("") /* ERROR: unsupported element type: IrRawFunctionReferenceImpl */
, extraOverriddenMethodTypes = [], shouldBeSerializable = false)
      })
    }
    return #INSTANCE
  }

  /* fake */ override fun unmount(bridge: AdaptiveBridge<BT>)

  /* fake */ override fun innerUnmount(bridge: AdaptiveBridge<BT>)

  /* fake */ override fun dispose()

  /* fake */ override fun haveToPatch(closureDirtyMask: Int, dependencyMask: Int): Boolean

  /* fake */ override fun getThisClosureDirtyMask(): Int

  /* fake */ override fun getCreateClosureDirtyMask(): Int

  /* fake */ override fun getCreateClosureVariable(variableIndex: Int): Any?

  /* fake */ override fun getThisClosureVariable(variableIndex: Int): Any?

  /* fake */ override fun setStateVariable(index: Int, value: Any?)

  /* fake */ override fun setStateVariable(index: Int, value: Any?, origin: AdaptiveStateVariableBinding<*>?)

  /* fake */ override fun setDirty(index: Int, callPatch: Boolean)

  /* fake */ override fun addProducer(producer: AdaptiveProducer)

  /* fake */ override fun removeProducer(producer: AdaptiveProducer)

  /* fake */ override fun addBinding(binding: AdaptiveStateVariableBinding<*>)

  /* fake */ override fun setBinding(indexInThis: Int, descendant: AdaptiveFragment<BT>, indexInTarget: Int, path: Array<String>?, boundType: String): AdaptiveStateVariableBinding<*>

  /* fake */ override fun removeBinding(binding: AdaptiveStateVariableBinding<*>)

  /* fake */ override fun localBinding(indexInState: Int, supportFunctionIndex: Int, boundType: String): AdaptiveStateVariableBinding<Int>

  /* fake */ override inline fun <reified T : Any?> single(): AdaptiveFragment<BT>

  /* fake */ override fun single(filterFun: Function1<@ParameterName(name = "it") AdaptiveFragment<BT>, Boolean>): AdaptiveFragment<BT>

  /* fake */ override fun filter(filterFun: Function1<@ParameterName(name = "it") AdaptiveFragment<BT>, Boolean>): List<AdaptiveFragment<BT>>

  /* fake */ override fun filter(result: MutableList<AdaptiveFragment<BT>>, filterFun: Function1<@ParameterName(name = "it") AdaptiveFragment<BT>, Boolean>)

  /* fake */ override fun pluginGenerated(point: String): Nothing

  /* fake */ override fun invalidIndex(index: Int): Nothing

  /* fake */ override fun trace(point: String)

  /* fake */ override fun trace(point: String, label: String, value: Any?)

  /* fake */ override fun <get-trace>(): Boolean

  /* fake */ override fun <set-trace>(value: Boolean)

  /* fake */ override fun traceWithState(point: String)

  /* fake */ override fun stateToTraceString(): String

  /* fake */ override fun traceSupport(point: String, supportFunction: AdaptiveSupportFunction, arguments: Array<out Any?>)

  /* fake */ override fun traceSupport(point: String, supportFunction: AdaptiveSupportFunction, result: Any?)

  /* fake */ override fun toString(): String

  /* fake */ override fun <get-adapter>(): AdaptiveAdapter<BT>

  /* fake */ override fun <get-parent>(): AdaptiveFragment<BT>?

  /* fake */ override fun <get-index>(): Int

  /* fake */ override fun <get-id>(): Long

  /* fake */ override fun <get-state>(): Array<Any?>

  /* fake */ override fun <get-thisClosure>(): AdaptiveClosure<BT>

  /* fake */ override fun <get-createClosure>(): AdaptiveClosure<BT>

  /* fake */ override fun <get-dirtyMask>(): Int

  /* fake */ override fun <set-dirtyMask>(value: Int)

  /* fake */ override fun <get-containedFragment>(): AdaptiveFragment<BT>?

  /* fake */ override fun <set-containedFragment>(value: AdaptiveFragment<BT>?)

  /* fake */ override fun <get-producers>(): MutableList<AdaptiveProducer>?

  /* fake */ override fun <set-producers>(value: MutableList<AdaptiveProducer>?)

  /* fake */ override fun <get-bindings>(): MutableList<AdaptiveStateVariableBinding<*>>?

  /* fake */ override fun <set-bindings>(value: MutableList<AdaptiveStateVariableBinding<*>>?)

  /* fake */ override operator fun equals(other: Any?): Boolean

  /* fake */ override fun hashCode(): Int

}

`
Details: Internal error in body lowering: java.lang.ClassCastException: class org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl cannot be cast to class org.jetbrains.kotlin.ir.declarations.IrDeclarationWithName (org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl and org.jetbrains.kotlin.ir.declarations.IrDeclarationWithName are in unnamed module of loader 'app')
    at org.jetbrains.kotlin.backend.common.lower.LocalDeclarationsLowering$LocalDeclarationsTransformer.generateNameForLiftedDeclaration$lambda$22(LocalDeclarationsLowering.kt:691)
    at kotlin.text.StringsKt__AppendableKt.appendElement(Appendable.kt:84)
    at kotlin.collections.CollectionsKt___CollectionsKt.joinTo(_Collections.kt:3493)
    at kotlin.collections.CollectionsKt___CollectionsKt.joinToString(_Collections.kt:3510)
    at kotlin.collections.CollectionsKt___CollectionsKt.joinToString$default(_Collections.kt:3509)
    at org.jetbrains.kotlin.backend.common.lower.LocalDeclarationsLowering$LocalDeclarationsTransformer.generateNameForLiftedDeclaration(LocalDeclarationsLowering.kt:691)
    at org.jetbrains.kotlin.backend.common.lower.LocalDeclarationsLowering$LocalDeclarationsTransformer.createLiftedDeclaration(LocalDeclarationsLowering.kt:710)
    at org.jetbrains.kotlin.backend.common.lower.LocalDeclarationsLowering$LocalDeclarationsTransformer.transformDeclarations(LocalDeclarationsLowering.kt:652)
    at org.jetbrains.kotlin.backend.common.lower.LocalDeclarationsLowering$LocalDeclarationsTransformer.lowerLocalDeclarations(LocalDeclarationsLowering.kt:292)
    at org.jetbrains.kotlin.backend.common.lower.LocalDeclarationsLowering.lower(LocalDeclarationsLowering.kt:92)
    at org.jetbrains.kotlin.backend.common.BodyLoweringVisitor.visitBody$lambda$2(Lower.kt:193)
    at org.jetbrains.kotlin.ir.declarations.StageController.restrictTo(PersistentApi.kt:11)
    at org.jetbrains.kotlin.backend.common.BodyLoweringVisitor.visitBody(Lower.kt:192)
    at org.jetbrains.kotlin.backend.common.BodyLoweringVisitor.visitBody(Lower.kt:171)
    at org.jetbrains.kotlin.ir.visitors.IrElementVisitor$DefaultImpls.visitBlockBody(IrElementVisitor.kt:92)
    at org.jetbrains.kotlin.backend.common.BodyLoweringVisitor.visitBlockBody(Lower.kt:171)
    at org.jetbrains.kotlin.backend.common.BodyLoweringVisitor.visitBlockBody(Lower.kt:171)
    at org.jetbrains.kotlin.ir.expressions.IrBlockBody.accept(IrBlockBody.kt:20)
    at org.jetbrains.kotlin.ir.declarations.IrFunction.acceptChildren(IrFunction.kt:50)
    at org.jetbrains.kotlin.backend.common.BodyLoweringVisitor.visitDeclaration(Lower.kt:180)
    at org.jetbrains.kotlin.backend.common.BodyLoweringVisitor.visitDeclaration(Lower.kt:171)
    at org.jetbrains.kotlin.ir.visitors.IrElementVisitor$DefaultImpls.visitFunction(IrElementVisitor.kt:38)
    at org.jetbrains.kotlin.backend.common.BodyLoweringVisitor.visitFunction(Lower.kt:171)
    at org.jetbrains.kotlin.backend.common.BodyLoweringVisitor.visitFunction(Lower.kt:171)
    at org.jetbrains.kotlin.ir.visitors.IrElementVisitor$DefaultImpls.visitSimpleFunction(IrElementVisitor.kt:65)
    at org.jetbrains.kotlin.backend.common.BodyLoweringVisitor.visitSimpleFunction(Lower.kt:171)
    at org.jetbrains.kotlin.backend.common.BodyLoweringVisitor.visitSimpleFunction(Lower.kt:171)
    at org.jetbrains.kotlin.ir.declarations.IrSimpleFunction.accept(IrSimpleFunction.kt:36)
    at org.jetbrains.kotlin.backend.common.BodyLoweringVisitor.visitClass(Lower.kt:186)
    at org.jetbrains.kotlin.backend.common.BodyLoweringVisitor.visitClass(Lower.kt:171)
    at org.jetbrains.kotlin.ir.declarations.IrClass.accept(IrClass.kt:72)
    at org.jetbrains.kotlin.backend.common.LowerKt.runOnFilePostfix(Lower.kt:150)
    at org.jetbrains.kotlin.backend.common.LowerKt.runOnFilePostfix$default(Lower.kt:143)
    at org.jetbrains.kotlin.backend.common.lower.LocalDeclarationsLowering.lower(LocalDeclarationsLowering.kt:80)
    at org.jetbrains.kotlin.backend.common.phaser.PhaseBuildersKt.makeIrFilePhase$lambda$5(PhaseBuilders.kt:114)
    at org.jetbrains.kotlin.backend.common.phaser.PhaseBuildersKt$createSimpleNamedCompilerPhase$1.phaseBody(PhaseBuilders.kt:71)
    at org.jetbrains.kotlin.backend.common.phaser.SimpleNamedCompilerPhase.phaseBody(CompilerPhase.kt:226)
    at org.jetbrains.kotlin.backend.common.phaser.AbstractNamedCompilerPhase.invoke(CompilerPhase.kt:113)
    at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invokeSequential(performByIrFile.kt:62)
    ... 43 more
Caused by: java.lang.ClassCastException: class org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl cannot be cast to class org.jetbrains.kotlin.ir.declarations.IrDeclarationWithName (org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl and org.jetbrains.kotlin.ir.declarations.IrDeclarationWithName are in unnamed module of loader 'app')
    ... 82 more
toth-istvan-zoltan commented 1 month ago

Also fails with 2.0.0-RC3

toth-istvan-zoltan commented 1 month ago

State access transform missing case, fixed.