MPP: Fix compatibility issue with Android Studio 3.3 Canary 7
'TargetPlatformKind' is still used in AS 3.3 so we can't remove it entirely yet.
This commit is contained in:
+2
-2
@@ -28,7 +28,7 @@ import com.intellij.openapi.project.Project
|
|||||||
import com.intellij.openapi.roots.OrderRootType
|
import com.intellij.openapi.roots.OrderRootType
|
||||||
import com.intellij.openapi.roots.impl.libraries.LibraryEx
|
import com.intellij.openapi.roots.impl.libraries.LibraryEx
|
||||||
import com.intellij.openapi.roots.libraries.Library
|
import com.intellij.openapi.roots.libraries.Library
|
||||||
import org.jetbrains.kotlin.idea.configuration.detectPlatformByPlugin
|
import org.jetbrains.kotlin.idea.configuration.detectPlatformKindByPlugin
|
||||||
import org.jetbrains.kotlin.idea.framework.detectLibraryKind
|
import org.jetbrains.kotlin.idea.framework.detectLibraryKind
|
||||||
import org.jetbrains.kotlin.idea.platform.tooling
|
import org.jetbrains.kotlin.idea.platform.tooling
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -44,7 +44,7 @@ class KotlinAndroidGradleLibraryDataService : AbstractProjectDataService<JavaMod
|
|||||||
) {
|
) {
|
||||||
for (dataNode in toImport) {
|
for (dataNode in toImport) {
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
val targetLibraryKind = detectPlatformByPlugin(dataNode.parent as DataNode<ModuleData>)?.tooling?.libraryKind
|
val targetLibraryKind = detectPlatformKindByPlugin(dataNode.parent as DataNode<ModuleData>)?.tooling?.libraryKind
|
||||||
if (targetLibraryKind != null) {
|
if (targetLibraryKind != null) {
|
||||||
for (dep in dataNode.data.jarLibraryDependencies) {
|
for (dep in dataNode.data.jarLibraryDependencies) {
|
||||||
val library = modelsProvider.findLibraryByBinaryPath(dep.binaryPath) as LibraryEx? ?: continue
|
val library = modelsProvider.findLibraryByBinaryPath(dep.binaryPath) as LibraryEx? ?: continue
|
||||||
|
|||||||
+2
-2
@@ -28,7 +28,7 @@ import com.intellij.openapi.project.Project
|
|||||||
import com.intellij.openapi.roots.OrderRootType
|
import com.intellij.openapi.roots.OrderRootType
|
||||||
import com.intellij.openapi.roots.impl.libraries.LibraryEx
|
import com.intellij.openapi.roots.impl.libraries.LibraryEx
|
||||||
import com.intellij.openapi.roots.libraries.Library
|
import com.intellij.openapi.roots.libraries.Library
|
||||||
import org.jetbrains.kotlin.idea.configuration.detectPlatformByPlugin
|
import org.jetbrains.kotlin.idea.configuration.detectPlatformKindByPlugin
|
||||||
import org.jetbrains.kotlin.idea.framework.detectLibraryKind
|
import org.jetbrains.kotlin.idea.framework.detectLibraryKind
|
||||||
import org.jetbrains.kotlin.idea.platform.tooling
|
import org.jetbrains.kotlin.idea.platform.tooling
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -44,7 +44,7 @@ class KotlinAndroidGradleLibraryDataService : AbstractProjectDataService<JavaMod
|
|||||||
) {
|
) {
|
||||||
for (dataNode in toImport) {
|
for (dataNode in toImport) {
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
val targetLibraryKind = detectPlatformByPlugin(dataNode.parent as DataNode<ModuleData>)?.tooling?.libraryKind
|
val targetLibraryKind = detectPlatformKindByPlugin(dataNode.parent as DataNode<ModuleData>)?.tooling?.libraryKind
|
||||||
if (targetLibraryKind != null) {
|
if (targetLibraryKind != null) {
|
||||||
for (dep in dataNode.data.jarLibraryDependencies) {
|
for (dep in dataNode.data.jarLibraryDependencies) {
|
||||||
val library = modelsProvider.findLibraryByBinaryPath(dep.binaryPath) as LibraryEx? ?: continue
|
val library = modelsProvider.findLibraryByBinaryPath(dep.binaryPath) as LibraryEx? ?: continue
|
||||||
|
|||||||
+2
-2
@@ -28,7 +28,7 @@ import com.intellij.openapi.project.Project
|
|||||||
import com.intellij.openapi.roots.OrderRootType
|
import com.intellij.openapi.roots.OrderRootType
|
||||||
import com.intellij.openapi.roots.impl.libraries.LibraryEx
|
import com.intellij.openapi.roots.impl.libraries.LibraryEx
|
||||||
import com.intellij.openapi.roots.libraries.Library
|
import com.intellij.openapi.roots.libraries.Library
|
||||||
import org.jetbrains.kotlin.idea.configuration.detectPlatformByPlugin
|
import org.jetbrains.kotlin.idea.configuration.detectPlatformKindByPlugin
|
||||||
import org.jetbrains.kotlin.idea.framework.detectLibraryKind
|
import org.jetbrains.kotlin.idea.framework.detectLibraryKind
|
||||||
import org.jetbrains.kotlin.idea.platform.tooling
|
import org.jetbrains.kotlin.idea.platform.tooling
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -44,7 +44,7 @@ class KotlinAndroidGradleLibraryDataService : AbstractProjectDataService<JavaMod
|
|||||||
) {
|
) {
|
||||||
for (dataNode in toImport) {
|
for (dataNode in toImport) {
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
val targetLibraryKind = detectPlatformByPlugin(dataNode.parent as DataNode<ModuleData>)?.tooling?.libraryKind
|
val targetLibraryKind = detectPlatformKindByPlugin(dataNode.parent as DataNode<ModuleData>)?.tooling?.libraryKind
|
||||||
if (targetLibraryKind != null) {
|
if (targetLibraryKind != null) {
|
||||||
for (dep in dataNode.data.jarLibraryDependencies) {
|
for (dep in dataNode.data.jarLibraryDependencies) {
|
||||||
val library = modelsProvider.findLibraryByBinaryPath(dep.binaryPath) as LibraryEx? ?: continue
|
val library = modelsProvider.findLibraryByBinaryPath(dep.binaryPath) as LibraryEx? ?: continue
|
||||||
|
|||||||
+2
-2
@@ -28,7 +28,7 @@ import com.intellij.openapi.project.Project
|
|||||||
import com.intellij.openapi.roots.OrderRootType
|
import com.intellij.openapi.roots.OrderRootType
|
||||||
import com.intellij.openapi.roots.impl.libraries.LibraryEx
|
import com.intellij.openapi.roots.impl.libraries.LibraryEx
|
||||||
import com.intellij.openapi.roots.libraries.Library
|
import com.intellij.openapi.roots.libraries.Library
|
||||||
import org.jetbrains.kotlin.idea.configuration.detectPlatformByPlugin
|
import org.jetbrains.kotlin.idea.configuration.detectPlatformKindByPlugin
|
||||||
import org.jetbrains.kotlin.idea.framework.detectLibraryKind
|
import org.jetbrains.kotlin.idea.framework.detectLibraryKind
|
||||||
import org.jetbrains.kotlin.idea.platform.tooling
|
import org.jetbrains.kotlin.idea.platform.tooling
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -44,7 +44,7 @@ class KotlinAndroidGradleLibraryDataService : AbstractProjectDataService<JavaMod
|
|||||||
) {
|
) {
|
||||||
for (dataNode in toImport) {
|
for (dataNode in toImport) {
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
val targetLibraryKind = detectPlatformByPlugin(dataNode.parent as DataNode<ModuleData>)?.tooling?.libraryKind
|
val targetLibraryKind = detectPlatformKindByPlugin(dataNode.parent as DataNode<ModuleData>)?.tooling?.libraryKind
|
||||||
if (targetLibraryKind != null) {
|
if (targetLibraryKind != null) {
|
||||||
for (dep in dataNode.data.jarLibraryDependencies) {
|
for (dep in dataNode.data.jarLibraryDependencies) {
|
||||||
val library = modelsProvider.findLibraryByBinaryPath(dep.binaryPath) as LibraryEx? ?: continue
|
val library = modelsProvider.findLibraryByBinaryPath(dep.binaryPath) as LibraryEx? ?: continue
|
||||||
|
|||||||
+18
-3
@@ -162,7 +162,7 @@ class KotlinGradleLibraryDataService : AbstractProjectDataService<LibraryData, V
|
|||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
val moduleDataNodes = projectDataNode.children.filter { it.data is ModuleData } as List<DataNode<ModuleData>>
|
val moduleDataNodes = projectDataNode.children.filter { it.data is ModuleData } as List<DataNode<ModuleData>>
|
||||||
val anyNonJvmModules = moduleDataNodes
|
val anyNonJvmModules = moduleDataNodes
|
||||||
.any { node -> detectPlatformByPlugin(node)?.takeIf { !it.isJvm } != null }
|
.any { node -> detectPlatformKindByPlugin(node)?.takeIf { !it.isJvm } != null }
|
||||||
|
|
||||||
for (libraryDataNode in toImport) {
|
for (libraryDataNode in toImport) {
|
||||||
val ideLibrary = modelsProvider.findIdeLibrary(libraryDataNode.data) ?: continue
|
val ideLibrary = modelsProvider.findIdeLibrary(libraryDataNode.data) ?: continue
|
||||||
@@ -202,11 +202,26 @@ class KotlinGradleLibraryDataService : AbstractProjectDataService<LibraryData, V
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun detectPlatformByPlugin(moduleNode: DataNode<ModuleData>): IdePlatformKind<*>? {
|
fun detectPlatformKindByPlugin(moduleNode: DataNode<ModuleData>): IdePlatformKind<*>? {
|
||||||
val pluginId = moduleNode.platformPluginId
|
val pluginId = moduleNode.platformPluginId
|
||||||
return IdePlatformKind.ALL_KINDS.firstOrNull { it.tooling.gradlePluginId == pluginId }
|
return IdePlatformKind.ALL_KINDS.firstOrNull { it.tooling.gradlePluginId == pluginId }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Suppress("DEPRECATION_ERROR")
|
||||||
|
@Deprecated(
|
||||||
|
"Use detectPlatformKindByPlugin() instead",
|
||||||
|
replaceWith = ReplaceWith("detectPlatformKindByPlugin(moduleNode)"),
|
||||||
|
level = DeprecationLevel.ERROR
|
||||||
|
)
|
||||||
|
fun detectPlatformByPlugin(moduleNode: DataNode<ModuleData>): TargetPlatformKind<*>? {
|
||||||
|
return when (moduleNode.platformPluginId) {
|
||||||
|
"kotlin-platform-jvm" -> TargetPlatformKind.Jvm[JvmTarget.JVM_1_6]
|
||||||
|
"kotlin-platform-js" -> TargetPlatformKind.JavaScript
|
||||||
|
"kotlin-platform-common" -> TargetPlatformKind.Common
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun detectPlatformByLibrary(moduleNode: DataNode<ModuleData>): IdePlatformKind<*>? {
|
private fun detectPlatformByLibrary(moduleNode: DataNode<ModuleData>): IdePlatformKind<*>? {
|
||||||
val detectedPlatforms =
|
val detectedPlatforms =
|
||||||
mavenLibraryIdToPlatform.entries
|
mavenLibraryIdToPlatform.entries
|
||||||
@@ -246,7 +261,7 @@ fun configureFacetByGradleModule(
|
|||||||
|
|
||||||
val compilerVersion = moduleNode.findAll(BuildScriptClasspathData.KEY).firstOrNull()?.data?.let(::findKotlinPluginVersion)
|
val compilerVersion = moduleNode.findAll(BuildScriptClasspathData.KEY).firstOrNull()?.data?.let(::findKotlinPluginVersion)
|
||||||
?: return null
|
?: return null
|
||||||
val platformKind = detectPlatformByPlugin(moduleNode) ?: detectPlatformByLibrary(moduleNode)
|
val platformKind = detectPlatformKindByPlugin(moduleNode) ?: detectPlatformByLibrary(moduleNode)
|
||||||
|
|
||||||
// TODO there should be a way to figure out the correct platform version
|
// TODO there should be a way to figure out the correct platform version
|
||||||
val platform = platformKind?.defaultPlatform
|
val platform = platformKind?.defaultPlatform
|
||||||
|
|||||||
@@ -26,6 +26,31 @@ import org.jetbrains.kotlin.platform.impl.JsIdePlatformKind
|
|||||||
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
|
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
|
||||||
import org.jetbrains.kotlin.utils.DescriptionAware
|
import org.jetbrains.kotlin.utils.DescriptionAware
|
||||||
|
|
||||||
|
@Deprecated("Use IdePlatformKind instead.", level = DeprecationLevel.ERROR)
|
||||||
|
sealed class TargetPlatformKind<out Version : TargetPlatformVersion>(
|
||||||
|
val version: Version,
|
||||||
|
val name: String
|
||||||
|
) : DescriptionAware {
|
||||||
|
override val description = "$name ${version.description}"
|
||||||
|
|
||||||
|
class Jvm(version: JvmTarget) : @Suppress("DEPRECATION_ERROR") TargetPlatformKind<JvmTarget>(version, "JVM") {
|
||||||
|
companion object {
|
||||||
|
private val JVM_PLATFORMS by lazy { JvmTarget.values().map(::Jvm) }
|
||||||
|
operator fun get(version: JvmTarget) = JVM_PLATFORMS[version.ordinal]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
object JavaScript : @Suppress("DEPRECATION_ERROR") TargetPlatformKind<TargetPlatformVersion.NoVersion>(
|
||||||
|
TargetPlatformVersion.NoVersion,
|
||||||
|
"JavaScript"
|
||||||
|
)
|
||||||
|
|
||||||
|
object Common : @Suppress("DEPRECATION_ERROR") TargetPlatformKind<TargetPlatformVersion.NoVersion>(
|
||||||
|
TargetPlatformVersion.NoVersion,
|
||||||
|
"Common (experimental)"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
object CoroutineSupport {
|
object CoroutineSupport {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun byCompilerArguments(arguments: CommonCompilerArguments?): LanguageFeature.State =
|
fun byCompilerArguments(arguments: CommonCompilerArguments?): LanguageFeature.State =
|
||||||
|
|||||||
@@ -82,4 +82,13 @@ class JSLibraryType : LibraryType<DummyLibraryProperties>(JSLibraryKind) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun isAcceptedForJsLibrary(extension: String?) = extension == "js" || extension == "kjsm"
|
private fun isAcceptedForJsLibrary(extension: String?) = extension == "js" || extension == "kjsm"
|
||||||
|
|
||||||
|
@Suppress("DEPRECATION_ERROR")
|
||||||
|
// Can't import a member annotated with DEPRECATION_ERROR
|
||||||
|
val org.jetbrains.kotlin.config.TargetPlatformKind<*>.libraryKind: PersistentLibraryKind<*>?
|
||||||
|
get() = when (this) {
|
||||||
|
org.jetbrains.kotlin.config.TargetPlatformKind.JavaScript -> JSLibraryKind
|
||||||
|
org.jetbrains.kotlin.config.TargetPlatformKind.Common -> CommonLibraryKind
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user