CLion/AppCode: Provide proper default platform instead of JVM

This commit is contained in:
Simon Ogorodnik
2018-10-16 18:05:06 +03:00
committed by Dmitriy Dolovov
parent 39b151e37b
commit 64800266f5
2 changed files with 12 additions and 5 deletions
@@ -25,9 +25,11 @@ import com.intellij.openapi.roots.libraries.PersistentLibraryKind
import com.intellij.openapi.util.io.JarUtil
import com.intellij.openapi.vfs.*
import org.jetbrains.kotlin.caches.resolve.IdePlatformKindResolution
import org.jetbrains.kotlin.caches.resolve.resolution
import org.jetbrains.kotlin.idea.vfilefinder.KnownLibraryKindForIndex
import org.jetbrains.kotlin.idea.vfilefinder.getLibraryKindForJar
import org.jetbrains.kotlin.js.resolve.JsPlatform
import org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider
import org.jetbrains.kotlin.resolve.TargetPlatform
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.utils.PathUtil
@@ -78,10 +80,14 @@ fun detectLibraryKind(roots: Array<VirtualFile>): PersistentLibraryKind<*>? {
}
}
return IdePlatformKindResolution
.getInstances()
.firstOrNull { it.isLibraryFileForPlatform(jarFile) }
?.libraryKind
val matchingResolution =
IdePlatformKindResolution
.getInstances()
.firstOrNull { it.isLibraryFileForPlatform(jarFile) }
if (matchingResolution != null) return matchingResolution.libraryKind
return DefaultIdeTargetPlatformKindProvider.defaultPlatform.kind.resolution.libraryKind
}
fun getLibraryJar(roots: Array<VirtualFile>, jarPattern: Pattern): VirtualFile? {
@@ -39,6 +39,7 @@ import org.jetbrains.kotlin.idea.core.isAndroidModule
import org.jetbrains.kotlin.idea.framework.KotlinSdkType
import org.jetbrains.kotlin.idea.platform.tooling
import org.jetbrains.kotlin.idea.util.application.runWriteAction
import org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider
import org.jetbrains.kotlin.platform.IdePlatform
import org.jetbrains.kotlin.platform.IdePlatformKind
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
@@ -51,7 +52,7 @@ var Module.hasExternalSdkConfiguration: Boolean
private fun getDefaultTargetPlatform(module: Module, rootModel: ModuleRootModel?): IdePlatform<*, *> {
val platformKind = IdePlatformKind.ALL_KINDS.firstOrNull {
getRuntimeLibraryVersions(module, rootModel, it).isNotEmpty()
} ?: JvmIdePlatformKind
} ?: DefaultIdeTargetPlatformKindProvider.defaultPlatform.kind
if (platformKind == JvmIdePlatformKind) {
var jvmTarget = Kotlin2JvmCompilerArgumentsHolder.getInstance(module.project).settings.jvmTarget?.let { JvmTarget.fromString(it) }
if (jvmTarget == null) {