diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/platform/konan/NativePlatform.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/platform/konan/NativePlatform.kt index 87460aefdc7..5e7da45f50d 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/platform/konan/NativePlatform.kt +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/platform/konan/NativePlatform.kt @@ -52,6 +52,9 @@ object NativePlatforms { } } + fun nativePlatformByTargetNames(targets: Collection): TargetPlatform = + nativePlatformByTargets(targets.mapNotNull { KonanTarget.predefinedTargets[it] }) + @Deprecated( message = "Should be accessed only by compatibility layer, other clients should use 'unspecifiedNativePlatform'", level = DeprecationLevel.ERROR diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinSourceSetDataService.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinSourceSetDataService.kt index ecd6fc295aa..f2cec44643b 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinSourceSetDataService.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinSourceSetDataService.kt @@ -30,7 +30,6 @@ import org.jetbrains.kotlin.idea.inspections.gradle.findAll import org.jetbrains.kotlin.idea.inspections.gradle.findKotlinPluginVersion import org.jetbrains.kotlin.idea.platform.IdePlatformKindTooling import org.jetbrains.kotlin.idea.roots.migrateNonJvmSourceFolders -import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind import org.jetbrains.kotlin.platform.impl.NativeIdePlatformKind @@ -111,10 +110,7 @@ class KotlinSourceSetDataService : AbstractProjectDataService { - val nativeTargets = moduleData.konanTargets.mapNotNull { KonanTarget.predefinedTargets[it] } - NativePlatforms.nativePlatformByTargets(nativeTargets) - } + is NativeIdePlatformKind -> NativePlatforms.nativePlatformByTargetNames(moduleData.konanTargets) else -> platformKind.defaultPlatform.componentPlatforms } } diff --git a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativePlatformKindResolution.kt b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativePlatformKindResolution.kt index 933b5753ce4..4a701566fb6 100644 --- a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativePlatformKindResolution.kt +++ b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativePlatformKindResolution.kt @@ -42,7 +42,9 @@ import org.jetbrains.kotlin.platform.impl.NativeIdePlatformKind import org.jetbrains.kotlin.resolve.ImplicitIntegerCoercion import org.jetbrains.kotlin.resolve.TargetEnvironment import org.jetbrains.kotlin.library.metadata.NullFlexibleTypeDeserializer +import org.jetbrains.kotlin.library.nativeTargets import org.jetbrains.kotlin.platform.konan.NativePlatforms +import org.jetbrains.kotlin.platform.konan.NativePlatforms.nativePlatformByTargetNames import org.jetbrains.kotlin.serialization.konan.impl.KlibMetadataModuleDescriptorFactoryImpl import org.jetbrains.kotlin.storage.StorageManager @@ -161,7 +163,7 @@ class NativeKlibLibraryInfo(project: Project, library: Library, libraryRoot: Str return capabilities } - override val platform: TargetPlatform - // TODO: detect native platform by library - get() = NativePlatforms.unspecifiedNativePlatform + override val platform: TargetPlatform by lazy { + nativePlatformByTargetNames(resolvedKotlinLibrary.safeRead(emptyList()) { nativeTargets }) + } }