hi all! i have a problem with compilation of new c...
# kotlin-native
a
hi all! i have a problem with compilation of new coroutines version on ios...please help 🙂 details in thread
after update to
0.30.0-eap13
compilation to iOS failed with:
Copy code
error: compilation failed: null

 * Source files: MR.kt, EventType.kt, LiveClub.kt, LiveEvent.kt, LiveEventDetails.kt, LiveEventWithWeather.kt, LiveGender.kt, LiveListItem.kt, LiveResult.kt, LiveStage.kt, Weather.kt, LiveEventsRepository.kt, Constants.kt, LiveEventsApi.kt, LiveEventDetailsRequest.kt, WeatherRequest.kt, LiveEventDetailsResponse.kt, LiveEventListResponse.kt, MR.kt
 * Compiler version info: Konan: 0.9.2 / Kotlin: 1.3.0
 * Output kind: FRAMEWORK

exception: kotlin.KotlinNullPointerException
    at org.jetbrains.kotlin.backend.konan.optimizations.Devirtualization$DevirtualizationAnalysis$InstantiationsSearcher.processVirtualCall(Devirtualization.kt:275)
    at org.jetbrains.kotlin.backend.konan.optimizations.Devirtualization$DevirtualizationAnalysis$InstantiationsSearcher.checkSupertypes(Devirtualization.kt:304)
    at org.jetbrains.kotlin.backend.konan.optimizations.Devirtualization$DevirtualizationAnalysis$InstantiationsSearcher.checkSupertypes(Devirtualization.kt:311)
    at org.jetbrains.kotlin.backend.konan.optimizations.Devirtualization$DevirtualizationAnalysis$InstantiationsSearcher.checkSupertypes(Devirtualization.kt:311)
    at org.jetbrains.kotlin.backend.konan.optimizations.Devirtualization$DevirtualizationAnalysis$InstantiationsSearcher.checkSupertypes(Devirtualization.kt:311)
    at org.jetbrains.kotlin.backend.konan.optimizations.Devirtualization$DevirtualizationAnalysis$InstantiationsSearcher.checkSupertypes(Devirtualization.kt:311)
    at org.jetbrains.kotlin.backend.konan.optimizations.Devirtualization$DevirtualizationAnalysis$InstantiationsSearcher.addInstantiatingClass(Devirtualization.kt:260)
    at org.jetbrains.kotlin.backend.konan.optimizations.Devirtualization$DevirtualizationAnalysis$InstantiationsSearcher.dfs(Devirtualization.kt:340)
    at org.jetbrains.kotlin.backend.konan.optimizations.Devirtualization$DevirtualizationAnalysis$InstantiationsSearcher.dfs(Devirtualization.kt:356)
    at org.jetbrains.kotlin.backend.konan.optimizations.Devirtualization$DevirtualizationAnalysis$InstantiationsSearcher.dfs(Devirtualization.kt:356)
    at org.jetbrains.kotlin.backend.konan.optimizations.Devirtualization$DevirtualizationAnalysis$InstantiationsSearcher.dfs(Devirtualization.kt:356)
    at org.jetbrains.kotlin.backend.konan.optimizations.Devirtualization$DevirtualizationAnalysis$InstantiationsSearcher.processVirtualCall(Devirtualization.kt:279)
    at org.jetbrains.kotlin.backend.konan.optimizations.Devirtualization$DevirtualizationAnalysis$InstantiationsSearcher.checkSupertypes(Devirtualization.kt:304)
    at org.jetbrains.kotlin.backend.konan.optimizations.Devirtualization$DevirtualizationAnalysis$InstantiationsSearcher.checkSupertypes(Devirtualization.kt:311)
    at org.jetbrains.kotlin.backend.konan.optimizations.Devirtualization$DevirtualizationAnalysis$InstantiationsSearcher.checkSupertypes(Devirtualization.kt:311)
    at org.jetbrains.kotlin.backend.konan.optimizations.Devirtualization$DevirtualizationAnalysis$InstantiationsSearcher.addInstantiatingClass(Devirtualization.kt:260)
    at org.jetbrains.kotlin.backend.konan.optimizations.Devirtualization$DevirtualizationAnalysis$InstantiationsSearcher.dfs(Devirtualization.kt:340)
    at org.jetbrains.kotlin.backend.konan.optimizations.Devirtualization$DevirtualizationAnalysis$InstantiationsSearcher.processVirtualCall(Devirtualization.kt:279)
    at org.jetbrains.kotlin.backend.konan.optimizations.Devirtualization$DevirtualizationAnalysis$InstantiationsSearcher.checkSupertypes(Devirtualization.kt:304)
    at org.jetbrains.kotlin.backend.konan.optimizations.Devirtualization$DevirtualizationAnalysis$InstantiationsSearcher.checkSupertypes(Devirtualization.kt:311)
    at org.jetbrains.kotlin.backend.konan.optimizations.Devirtualization$DevirtualizationAnalysis$InstantiationsSearcher.checkSupertypes(Devirtualization.kt:311)
...
on
0.26.1-rc-conf2
compilation is success 😞
o
Please use
—disable devirtualization
for now, will be fixed in next releases
a
ok. now compilation failed with other errors.
Copy code
Undefined symbols for architecture x86_64:
  "_kfun:kotlinx.coroutines.AbstractCoroutine.onCancellationInternal$kotlinx-coroutines-core-native(kotlinx.coroutines.CompletedExceptionally?)", referenced from:
      _ktype:kotlinx.coroutines.io.ByteChannelCoroutine in combined.o
      _kmethods:kotlinx.coroutines.io.ByteChannelCoroutine in combined.o
      _ktype:kotlinx.coroutines.io.WriterCoroutine in combined.o
      _kmethods:kotlinx.coroutines.io.WriterCoroutine in combined.o
  "_kfun:kotlinx.coroutines.AbstractCoroutine.onCompletionInternal$kotlinx-coroutines-core-native(kotlin.Any?;kotlin.Int)", referenced from:
      _ktype:kotlinx.coroutines.io.ByteChannelCoroutine in combined.o
      _kmethods:kotlinx.coroutines.io.ByteChannelCoroutine in combined.o
      _ktype:kotlinx.coroutines.io.WriterCoroutine in combined.o
      _kmethods:kotlinx.coroutines.io.WriterCoroutine in combined.o
  "_kfun:kotlinx.coroutines.JobSupport.<get-onCancelMode>$kotlinx-coroutines-core-native()ValueType", referenced from:
      _ktype:kotlinx.coroutines.io.ByteChannelCoroutine in combined.o
      _kmethods:kotlinx.coroutines.io.ByteChannelCoroutine in combined.o
      _ktype:kotlinx.coroutines.io.WriterCoroutine in combined.o
      _kmethods:kotlinx.coroutines.io.WriterCoroutine in combined.o
  "_kfun:kotlinx.coroutines.JobSupport.attachChild(kotlinx.coroutines.Job)kotlinx.coroutines.DisposableHandle", referenced from:
      _kmethods:kotlinx.coroutines.io.ByteChannelCoroutine in combined.o
      _kmethods:kotlinx.coroutines.io.WriterCoroutine in combined.o
  "_kfun:kotlinx.coroutines.JobSupport.handleJobException$kotlinx-coroutines-core-native(kotlin.Throwable)", referenced from:
      _ktype:kotlinx.coroutines.io.ByteChannelCoroutine in combined.o
      _kmethods:kotlinx.coroutines.io.ByteChannelCoroutine in combined.o
      _ktype:kotlinx.coroutines.io.WriterCoroutine in combined.o
      _kmethods:kotlinx.coroutines.io.WriterCoroutine in combined.o
  "_kfun:kotlinx.coroutines.JobSupport.hasOnFinishingHandler$kotlinx-coroutines-core-native(kotlin.Any?)ValueType", referenced from:
      _ktype:kotlinx.coroutines.io.ByteChannelCoroutine in combined.o
      _kmethods:kotlinx.coroutines.io.ByteChannelCoroutine in combined.o
      _ktype:kotlinx.coroutines.io.WriterCoroutine in combined.o
      _kmethods:kotlinx.coroutines.io.WriterCoroutine in combined.o
  "_kfun:kotlinx.coroutines.JobSupport.onFinishingInternal$kotlinx-coroutines-core-native(kotlin.Any?)", referenced from:
      _ktype:kotlinx.coroutines.io.ByteChannelCoroutine in combined.o
      _kmethods:kotlinx.coroutines.io.ByteChannelCoroutine in combined.o
      _ktype:kotlinx.coroutines.io.WriterCoroutine in combined.o
      _kmethods:kotlinx.coroutines.io.WriterCoroutine in combined.o
ld: symbol(s) not found for architecture x86_64
coroutines.io connected:
Copy code
+--- io.ktor:ktor-client-ios:0.9.5-rc13-conf2
|    \--- io.ktor:ktor-client-ios_debug_ios_arm64:0.9.5-rc13-conf2
|         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core-native:0.26.1-rc-conf2 -> 0.30.0-eap13
|         |    \--- org.jetbrains.kotlinx:kotlinx-coroutines-core-native_debug_ios_arm64:0.30.0-eap13
|         |         \--- org.jetbrains.kotlinx:atomicfu-native:0.11.9-eap13
|         |              \--- org.jetbrains.kotlinx:atomicfu-native_debug_ios_arm64:0.11.9-eap13
|         +--- org.jetbrains.kotlinx:kotlinx-io-native:0.1.0-alpha-16-rc13-conf2
|         |    \--- org.jetbrains.kotlinx:kotlinx-io-native_debug_ios_arm64:0.1.0-alpha-16-rc13-conf2
|         |         \--- org.jetbrains.kotlinx:atomicfu-native:0.11.7-rc-conf2 -> 0.11.9-eap13 (*)
|         +--- org.jetbrains.kotlinx:kotlinx-coroutines-io-native:0.1.0-alpha-16-rc13-conf2
|         |    \--- org.jetbrains.kotlinx:kotlinx-coroutines-io-native_debug_ios_arm64:0.1.0-alpha-16-rc13-conf2
|         |         +--- org.jetbrains.kotlinx:atomicfu-native:0.11.7-rc-conf2 -> 0.11.9-eap13 (*)
|         |         +--- org.jetbrains.kotlinx:kotlinx-io-native:0.1.0-alpha-16-rc13-conf2 (*)
|         |         \--- org.jetbrains.kotlinx:kotlinx-coroutines-core-native:0.26.1-rc-conf2 -> 0.30.0-eap13 (*)
|         +--- org.jetbrains.kotlinx:atomicfu-native:0.11.7-rc-conf2 -> 0.11.9-eap13 (*)
|         \--- io.ktor:ktor-client-core-ios:0.9.5-rc13-conf2
|              \--- io.ktor:ktor-client-core-ios_debug_ios_arm64:0.9.5-rc13-conf2
|                   +--- org.jetbrains.kotlinx:kotlinx-coroutines-core-native:0.26.1-rc-conf2 -> 0.30.0-eap13 (*)
|                   +--- org.jetbrains.kotlinx:kotlinx-io-native:0.1.0-alpha-16-rc13-conf2 (*)
|                   +--- org.jetbrains.kotlinx:kotlinx-coroutines-io-native:0.1.0-alpha-16-rc13-conf2 (*)
|                   +--- org.jetbrains.kotlinx:atomicfu-native:0.11.7-rc-conf2 -> 0.11.9-eap13 (*)
|                   \--- io.ktor:ktor-http-ios:0.9.5-rc13-conf2
|                        \--- io.ktor:ktor-http-ios_debug_ios_arm64:0.9.5-rc13-conf2
|                             +--- org.jetbrains.kotlinx:kotlinx-coroutines-core-native:0.26.1-rc-conf2 -> 0.30.0-eap13 (*)
|                             +--- org.jetbrains.kotlinx:kotlinx-io-native:0.1.0-alpha-16-rc13-conf2 (*)
|                             +--- org.jetbrains.kotlinx:kotlinx-coroutines-io-native:0.1.0-alpha-16-rc13-conf2 (*)
|                             +--- org.jetbrains.kotlinx:atomicfu-native:0.11.7-rc-conf2 -> 0.11.9-eap13 (*)
|                             \--- io.ktor:ktor-utils-ios:0.9.5-rc13-conf2
|                                  \--- io.ktor:ktor-utils-ios_debug_ios_arm64:0.9.5-rc13-conf2
|                                       +--- org.jetbrains.kotlinx:kotlinx-coroutines-core-native:0.26.1-rc-conf2 -> 0.30.0-eap13 (*)
|                                       +--- org.jetbrains.kotlinx:kotlinx-io-native:0.1.0-alpha-16-rc13-conf2 (*)
|                                       +--- org.jetbrains.kotlinx:kotlinx-coroutines-io-native:0.1.0-alpha-16-rc13-conf2 (*)
Copy code
|                                       \--- org.jetbrains.kotlinx:atomicfu-native:0.11.7-rc-conf2 -> 0.11.9-eap13 (*)
+--- io.ktor:ktor-http-ios:0.9.5-rc13-conf2 (*)
+--- io.ktor:ktor-utils-ios:0.9.5-rc13-conf2 (*)
+--- io.ktor:ktor-client-core-ios:0.9.5-rc13-conf2 (*)
+--- io.ktor:ktor-client-json-ios:0.9.5-rc13-conf2
|    \--- io.ktor:ktor-client-json-ios_debug_ios_arm64:0.9.5-rc13-conf2
|         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core-native:0.26.1-rc-conf2 -> 0.30.0-eap13 (*)
|         +--- org.jetbrains.kotlinx:kotlinx-io-native:0.1.0-alpha-16-rc13-conf2 (*)
|         +--- org.jetbrains.kotlinx:kotlinx-coroutines-io-native:0.1.0-alpha-16-rc13-conf2 (*)
|         +--- org.jetbrains.kotlinx:atomicfu-native:0.11.7-rc-conf2 -> 0.11.9-eap13 (*)
|         +--- io.ktor:ktor-client-core-ios:0.9.5-rc13-conf2 (*)
|         \--- org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:0.8.1-rc13
|              \--- org.jetbrains.kotlinx:kotlinx-serialization-runtime-native_debug_ios_arm64:0.8.1-rc13
+--- org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:0.8.1-rc13 (*)
+--- org.jetbrains.kotlinx:kotlinx-coroutines-core-native:0.30.0-eap13 (*)
+--- project :mpp-library:scl:core:ios
+--- project :mpp-library:scl:ktor:ios
|    \--- io.ktor:ktor-client-ios:0.9.5-rc13-conf2 (*)
+--- project :mpp-library:scl:coroutines:ios
|    \--- org.jetbrains.kotlinx:kotlinx-coroutines-core-native:0.30.0-eap13 (*)
\--- project :mpp-library:scl:serialization:ios
     \--- org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:0.8.1-rc13 (*)
j
Seems like the problem with devirtualization is caused by inconsistent libraries - the analysis was unable to find some overridden method of an interface.
a
with current rc13 versions it's difficult find correct versions of libraries, that can work together 😞
Copy code
ext {
    kotlin_version = '1.3.0-rc-57'
    kotlin_native_version = '0.9.2'
    coroutines_version = '0.30.0-eap13'
    serialization_version = '0.8.1-rc13'
    ktor_version = '0.9.5-rc13-conf2'
}
now i use this libs & versions