voyager icon indicating copy to clipboard operation
voyager copied to clipboard

IOS Build failed with kotlin 2.1.0 because of voyager

Open akardas16 opened this issue 11 months ago • 13 comments

Voyager Version -> 1.1.0-beta03

Error occurred while optimizing an expression:
CALL 'public abstract fun <set-value> (<set-?>: T of kotlinx.coroutines.flow.MutableStateFlow): kotlin.Unit declared in kotlinx.coroutines.flow.MutableStateFlow' type=kotlin.Unit origin=EQ
  $this: CALL 'internal final fun <get-lastScreenModelKey> (): kotlinx.coroutines.flow.MutableStateFlow<kotlin.String?{ cafe.adriel.voyager.core.model.ScreenModelKey? }> declared in cafe.adriel.voyager.core.model.ScreenModelStore' type=kotlinx.coroutines.flow.MutableStateFlow<kotlin.String?{ cafe.adriel.voyager.core.model.ScreenModelKey? }> origin=GET_PROPERTY
    $this: GET_VAR 'val this: cafe.adriel.voyager.core.model.ScreenModelStore [val] declared in cafe.adriel.voyager.koin.koinScreenModel' type=cafe.adriel.voyager.core.model.ScreenModelStore origin=null
  <set-?>: GET_VAR 'val key: kotlin.String{ cafe.adriel.voyager.core.model.ScreenModelKey } [val] declared in cafe.adriel.voyager.koin.koinScreenModel' type=kotlin.String{ cafe.adriel.voyager.core.model.ScreenModelKey } origin=null


java.lang.AssertionError: Error occurred while optimizing an expression:
CALL 'public abstract fun <set-value> (<set-?>: T of kotlinx.coroutines.flow.MutableStateFlow): kotlin.Unit declared in kotlinx.coroutines.flow.MutableStateFlow' type=kotlin.Unit origin=EQ
  $this: CALL 'internal final fun <get-lastScreenModelKey> (): kotlinx.coroutines.flow.MutableStateFlow<kotlin.String?{ cafe.adriel.voyager.core.model.ScreenModelKey? }> declared in cafe.adriel.voyager.core.model.ScreenModelStore' type=kotlinx.coroutines.flow.MutableStateFlow<kotlin.String?{ cafe.adriel.voyager.core.model.ScreenModelKey? }> origin=GET_PROPERTY
    $this: GET_VAR 'val this: cafe.adriel.voyager.core.model.ScreenModelStore [val] declared in cafe.adriel.voyager.koin.koinScreenModel' type=cafe.adriel.voyager.core.model.ScreenModelStore origin=null
  <set-?>: GET_VAR 'val key: kotlin.String{ cafe.adriel.voyager.core.model.ScreenModelKey } [val] declared in cafe.adriel.voyager.koin.koinScreenModel' type=kotlin.String{ cafe.adriel.voyager.core.model.ScreenModelKey } origin=null

	at org.jetbrains.kotlin.ir.interpreter.transformer.IrConstEvaluationContext.canBeInterpreted(IrConstEvaluationContext.kt:74)
	at org.jetbrains.kotlin.ir.interpreter.transformer.IrConstExpressionTransformer.visitCall(IrConstExpressionTransformer.kt:39)
	at org.jetbrains.kotlin.ir.interpreter.transformer.IrConstExpressionTransformer.visitCall(IrConstExpressionTransformer.kt:24)
	at org.jetbrains.kotlin.ir.expressions.IrCall.accept(IrCall.kt:24)
	at org.jetbrains.kotlin.ir.expressions.IrExpression.transform(IrExpression.kt:24)
	at org.jetbrains.kotlin.ir.expressions.IrExpression.transform(IrExpression.kt:20)
	at org.jetbrains.kotlin.ir.util.TransformKt.transformInPlace(transform.kt:35)
	at org.jetbrains.kotlin.ir.expressions.IrContainerExpression.transformChildren(IrContainerExpression.kt:26)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitExpression(IrElementTransformer.kt:99)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitExpression(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitContainerExpression(IrElementTransformer.kt:139)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitContainerExpression(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitBlock(IrElementTransformer.kt:142)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitBlock(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitInlinedFunctionBlock(IrElementTransformer.kt:151)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitInlinedFunctionBlock(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitInlinedFunctionBlock(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.expressions.IrInlinedFunctionBlock.accept(IrInlinedFunctionBlock.kt:24)
	at org.jetbrains.kotlin.ir.expressions.IrExpression.transform(IrExpression.kt:24)
	at org.jetbrains.kotlin.ir.expressions.IrExpression.transform(IrExpression.kt:20)
	at org.jetbrains.kotlin.ir.util.TransformKt.transformInPlace(transform.kt:35)
	at org.jetbrains.kotlin.ir.expressions.IrContainerExpression.transformChildren(IrContainerExpression.kt:26)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitExpression(IrElementTransformer.kt:99)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitExpression(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitContainerExpression(IrElementTransformer.kt:139)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitContainerExpression(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitBlock(IrElementTransformer.kt:142)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitBlock(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitReturnableBlock(IrElementTransformer.kt:148)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitReturnableBlock(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitReturnableBlock(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.expressions.IrReturnableBlock.accept(IrReturnableBlock.kt:23)
	at org.jetbrains.kotlin.ir.expressions.IrExpression.transform(IrExpression.kt:24)
	at org.jetbrains.kotlin.ir.expressions.IrExpression.transform(IrExpression.kt:20)
	at org.jetbrains.kotlin.ir.util.TransformKt.transformInPlace(transform.kt:35)
	at org.jetbrains.kotlin.ir.expressions.IrContainerExpression.transformChildren(IrContainerExpression.kt:26)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitExpression(IrElementTransformer.kt:99)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitExpression(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitContainerExpression(IrElementTransformer.kt:139)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitContainerExpression(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitBlock(IrElementTransformer.kt:142)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitBlock(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitBlock(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.expressions.IrBlock.accept(IrBlock.kt:18)
	at org.jetbrains.kotlin.ir.expressions.IrExpression.transform(IrExpression.kt:24)
	at org.jetbrains.kotlin.ir.expressions.IrReturn.transformChildren(IrReturn.kt:31)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitExpression(IrElementTransformer.kt:99)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitExpression(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitReturn(IrElementTransformer.kt:249)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitReturn(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitReturn(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.expressions.IrReturn.accept(IrReturn.kt:24)
	at org.jetbrains.kotlin.ir.expressions.IrExpression.transform(IrExpression.kt:24)
	at org.jetbrains.kotlin.ir.expressions.IrExpression.transform(IrExpression.kt:20)
	at org.jetbrains.kotlin.ir.util.TransformKt.transformInPlace(transform.kt:35)
	at org.jetbrains.kotlin.ir.expressions.IrContainerExpression.transformChildren(IrContainerExpression.kt:26)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitExpression(IrElementTransformer.kt:99)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitExpression(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitContainerExpression(IrElementTransformer.kt:139)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitContainerExpression(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitBlock(IrElementTransformer.kt:142)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitBlock(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitInlinedFunctionBlock(IrElementTransformer.kt:151)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitInlinedFunctionBlock(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitInlinedFunctionBlock(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.expressions.IrInlinedFunctionBlock.accept(IrInlinedFunctionBlock.kt:24)
	at org.jetbrains.kotlin.ir.expressions.IrExpression.transform(IrExpression.kt:24)
	at org.jetbrains.kotlin.ir.expressions.IrExpression.transform(IrExpression.kt:20)
	at org.jetbrains.kotlin.ir.util.TransformKt.transformInPlace(transform.kt:35)
	at org.jetbrains.kotlin.ir.expressions.IrContainerExpression.transformChildren(IrContainerExpression.kt:26)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitExpression(IrElementTransformer.kt:99)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitExpression(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitContainerExpression(IrElementTransformer.kt:139)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitContainerExpression(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitBlock(IrElementTransformer.kt:142)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitBlock(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitReturnableBlock(IrElementTransformer.kt:148)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitReturnableBlock(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitReturnableBlock(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.expressions.IrReturnableBlock.accept(IrReturnableBlock.kt:23)
	at org.jetbrains.kotlin.ir.expressions.IrExpression.transform(IrExpression.kt:24)
	at org.jetbrains.kotlin.ir.expressions.IrExpression.transform(IrExpression.kt:20)
	at org.jetbrains.kotlin.ir.util.TransformKt.transformInPlace(transform.kt:35)
	at org.jetbrains.kotlin.ir.expressions.IrContainerExpression.transformChildren(IrContainerExpression.kt:26)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitExpression(IrElementTransformer.kt:99)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitExpression(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitContainerExpression(IrElementTransformer.kt:139)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitContainerExpression(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitBlock(IrElementTransformer.kt:142)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitBlock(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitBlock(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.expressions.IrBlock.accept(IrBlock.kt:18)
	at org.jetbrains.kotlin.ir.expressions.IrExpression.transform(IrExpression.kt:24)
	at org.jetbrains.kotlin.ir.expressions.IrTypeOperatorCall.transformChildren(IrTypeOperatorCall.kt:33)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitExpression(IrElementTransformer.kt:99)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitExpression(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitTypeOperator(IrElementTransformer.kt:272)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitTypeOperator(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitTypeOperator(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.expressions.IrTypeOperatorCall.accept(IrTypeOperatorCall.kt:26)
	at org.jetbrains.kotlin.ir.expressions.IrExpression.transform(IrExpression.kt:24)
	at org.jetbrains.kotlin.ir.expressions.IrReturn.transformChildren(IrReturn.kt:31)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitExpression(IrElementTransformer.kt:99)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitExpression(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrElementTransformer$DefaultImpls.visitReturn(IrElementTransformer.kt:249)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitReturn(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.visitors.IrTransformer.visitReturn(IrTransformer.kt:14)
	at org.jetbrains.kotlin.ir.expressions.IrReturn.accept(IrReturn.kt:24)
	at org.jetbrains.kotlin.ir.expressions.IrExpression.transform(IrExpression.kt:24)
	at org.jetbrains.kotlin.ir.expressions.IrExpression.transform(IrExpression.kt:20)
	at org.jetbrains.kotlin.ir.util.TransformKt.transformInPlace(transform.kt:35)
	at org.jetbrains.kotlin.ir.expressions.IrContainerExpression.transformChildren(IrContainerExpression.kt:26)

akardas16 avatar Jan 21 '25 19:01 akardas16

the same issue was already opened in here. I didin't notice

akardas16 avatar Jan 21 '25 19:01 akardas16

Did you find a way how to fix it?

OlehSalamakha avatar Jan 22 '25 14:01 OlehSalamakha

Did you find a way how to fix it?

Unfortunately, I am switching to Decompose, which is being really helpful. Voyager is a great library, but seems it is not ready for production in the earlier releases.

esdras-ajulabs avatar Jan 22 '25 14:01 esdras-ajulabs

But voyager works on desktop, decompose doesn't, as I know.

OlehSalamakha avatar Jan 22 '25 14:01 OlehSalamakha

But voyager works on desktop, decompose doesn't, as I know.

It does work in Desktop with JVM. Not sure if it works in WASM, but that is in alpha (I guess). https://arkivanov.github.io/Decompose/faq/

esdras-ajulabs avatar Jan 22 '25 14:01 esdras-ajulabs

On Desktop it only works with mac os, but I need windows support.

OlehSalamakha avatar Jan 22 '25 15:01 OlehSalamakha

On Desktop it only works with mac os, but I need windows support.

Are you sure? Desktop apps built with Compose run on the JVM, so they should work on Windows, macOS, or even Linux without any issues. Maybe there’s just a setup problem on Windows?

EDIT: Supported multiplatform targets: Android, JVM/Desktop, Native/iOS, Native/macOS, JS/Canvas and JS/Wasm.

esdras-ajulabs avatar Jan 22 '25 15:01 esdras-ajulabs

I get this error when trying to use Firebase with Voyar koin in common, try to remove voyar koin and just use insert-koin.io

seotrader avatar Feb 12 '25 02:02 seotrader

same issue

Farhod-Tohirov avatar Feb 17 '25 06:02 Farhod-Tohirov

Same here 🥲

ahmednasserzaza avatar Feb 17 '25 14:02 ahmednasserzaza

I've switched to decompose, it is much solid library than voyager for now.

OlehSalamakha avatar Feb 17 '25 14:02 OlehSalamakha

I found a solution. I had two projects, both using Kotlin version 2.1.0. One of them was compiling on iOS, while the other was not. After searching for differences, I noticed that the only difference was that the compiling project had implemented the Rinku library (version 1.3.2) from this GitHub repository. I added this library to the non-compiling project, and now it compiles on iOS as well. It’s a ridiculous solution, but it works!

Farhod-Tohirov avatar Feb 20 '25 04:02 Farhod-Tohirov

I found one solution. I had 2 projects. kotlin version 2.1.0 on both of them. one is compiling on iOS, other not )). then searched difference. there is only one difference: compiling app implemented rinku (https://github.com/theolm/Rinku) lib (version 1.3.2). I added this app to next one, now it is compiling on iOS also )). ridiculously solution but working ))

https://github.com/adrielcafe/voyager/issues/520#issuecomment-2673582112

Farhod-Tohirov avatar Feb 21 '25 06:02 Farhod-Tohirov