https://kotlinlang.org logo
a

aleksey.tomin

02/17/2021, 1:19 PM
After migrate I’ve had a problem. macOS target
Copy code
e: Compilation failed: Backend Internal error: Exception during IR lowering
File being compiled: /Users/atomin/Documents/iq/xpoint-sdk/sdk/src/commonMain/kotlin/com/inventale/xpoint/sdk/Checker.kt
The root cause java.lang.AssertionError was thrown at: org.jetbrains.kotlin.ir.overrides.FakeOverrideBuilderStrategy.fakeOverrideMember(IrOverridingUtil.kt:43)

 * Source files: 
 * Compiler version info: Konan: 1.4.30 / Kotlin: 1.4.30
 * Output kind: PROGRAM

e: org.jetbrains.kotlin.backend.common.BackendException: Backend Internal error: Exception during IR lowering
File being compiled: /Users/atomin/Documents/iq/xpoint-sdk/sdk/src/commonMain/kotlin/com/inventale/xpoint/sdk/Checker.kt
The root cause java.lang.AssertionError was thrown at: org.jetbrains.kotlin.ir.overrides.FakeOverrideBuilderStrategy.fakeOverrideMember(IrOverridingUtil.kt:43)
        at org.jetbrains.kotlin.backend.common.CodegenUtil.reportBackendException(CodegenUtil.kt:239)
        at org.jetbrains.kotlin.backend.common.CodegenUtil.reportBackendException$default(CodegenUtil.kt:235)
        at org.jetbrains.kotlin.backend.common.phaser.PerformByIrFilePhase.invoke(PhaseBuilders.kt:124)
...
Caused by: java.lang.AssertionError: Unexpected variance in super type argument: in @0
        at org.jetbrains.kotlin.ir.overrides.FakeOverrideBuilderStrategy.fakeOverrideMember(IrOverridingUtil.kt:43)
        at org.jetbrains.kotlin.ir.overrides.IrOverridingUtil.buildFakeOverridesForClassUsingOverriddenSymbols(IrOverridingUtil.kt:168)
        at org.jetbrains.kotlin.backend.common.ir.IrUtilsKt.addFakeOverrides(IrUtils.kt:487)
        at org.jetbrains.kotlin.backend.common.ir.IrUtilsKt.addFakeOverrides$default(IrUtils.kt:485)
I can’t share project source. How can I fix the problem?
minimal code:
Copy code
private val actionsMap = AtomicReference(mapOf<String, Action>())

private fun getSortedActionList() =
        actionsMap.value.values.sortedWith { a, b -> a.callTime.compareTo(b.callTime) }
e

edrd

02/17/2021, 11:20 PM
Looks like a bug. Please report at kotl.in/issue
p

Paul Idstein

02/18/2021, 7:01 AM
We've seen the same stacktrace when switching to 1.4.30. Our issue was a lambda being assigned in an if-else conditonal. One lambda has a
error(...)
call the other not. This lead to different functional interfaces and the override failed. Kotlin 1.4.30 is really strict about generic types.
a

aleksey.tomin

02/18/2021, 7:07 AM
e

edrd

02/20/2021, 1:52 PM
Nice!
2 Views