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.util.io.JarUtil
import com.intellij.openapi.vfs.* import com.intellij.openapi.vfs.*
import org.jetbrains.kotlin.caches.resolve.IdePlatformKindResolution 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.KnownLibraryKindForIndex
import org.jetbrains.kotlin.idea.vfilefinder.getLibraryKindForJar import org.jetbrains.kotlin.idea.vfilefinder.getLibraryKindForJar
import org.jetbrains.kotlin.js.resolve.JsPlatform import org.jetbrains.kotlin.js.resolve.JsPlatform
import org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider
import org.jetbrains.kotlin.resolve.TargetPlatform import org.jetbrains.kotlin.resolve.TargetPlatform
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.utils.PathUtil import org.jetbrains.kotlin.utils.PathUtil
@@ -78,10 +80,14 @@ fun detectLibraryKind(roots: Array<VirtualFile>): PersistentLibraryKind<*>? {
} }
} }
return IdePlatformKindResolution val matchingResolution =
.getInstances() IdePlatformKindResolution
.firstOrNull { it.isLibraryFileForPlatform(jarFile) } .getInstances()
?.libraryKind .firstOrNull { it.isLibraryFileForPlatform(jarFile) }
if (matchingResolution != null) return matchingResolution.libraryKind
return DefaultIdeTargetPlatformKindProvider.defaultPlatform.kind.resolution.libraryKind
} }
fun getLibraryJar(roots: Array<VirtualFile>, jarPattern: Pattern): VirtualFile? { 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.framework.KotlinSdkType
import org.jetbrains.kotlin.idea.platform.tooling import org.jetbrains.kotlin.idea.platform.tooling
import org.jetbrains.kotlin.idea.util.application.runWriteAction 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.IdePlatform
import org.jetbrains.kotlin.platform.IdePlatformKind import org.jetbrains.kotlin.platform.IdePlatformKind
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
@@ -51,7 +52,7 @@ var Module.hasExternalSdkConfiguration: Boolean
private fun getDefaultTargetPlatform(module: Module, rootModel: ModuleRootModel?): IdePlatform<*, *> { private fun getDefaultTargetPlatform(module: Module, rootModel: ModuleRootModel?): IdePlatform<*, *> {
val platformKind = IdePlatformKind.ALL_KINDS.firstOrNull { val platformKind = IdePlatformKind.ALL_KINDS.firstOrNull {
getRuntimeLibraryVersions(module, rootModel, it).isNotEmpty() getRuntimeLibraryVersions(module, rootModel, it).isNotEmpty()
} ?: JvmIdePlatformKind } ?: DefaultIdeTargetPlatformKindProvider.defaultPlatform.kind
if (platformKind == JvmIdePlatformKind) { if (platformKind == JvmIdePlatformKind) {
var jvmTarget = Kotlin2JvmCompilerArgumentsHolder.getInstance(module.project).settings.jvmTarget?.let { JvmTarget.fromString(it) } var jvmTarget = Kotlin2JvmCompilerArgumentsHolder.getInstance(module.project).settings.jvmTarget?.let { JvmTarget.fromString(it) }
if (jvmTarget == null) { if (jvmTarget == null) {