[Compatibility] Restore KotlinProjectConfugirator.getTargetPlatform()

This commit is contained in:
Dmitry Savvinov
2019-05-17 13:22:58 +03:00
parent dfe0493f9a
commit 716e55d171
10 changed files with 61 additions and 5 deletions
@@ -26,6 +26,9 @@ class KotlinAndroidGradleModuleConfigurator internal constructor() : KotlinWithG
override val targetPlatform: TargetPlatform = JvmPlatforms.defaultJvmPlatform
@Suppress("DEPRECATION_ERROR")
override fun getTargetPlatform(): org.jetbrains.kotlin.resolve.TargetPlatform = JvmPlatforms.CompatJvmPlatform
override val presentableText: String = "Android with Gradle"
public override fun isApplicable(module: Module): Boolean = module.getBuildSystemType() == AndroidGradle
@@ -44,11 +47,11 @@ class KotlinAndroidGradleModuleConfigurator internal constructor() : KotlinWithG
}
else {
manipulator.configureModuleBuildScript(
kotlinPluginName,
getKotlinPluginExpression(file.isKtDsl()),
getStdlibArtifactName(sdk, version),
version,
jvmTarget
kotlinPluginName,
getKotlinPluginExpression(file.isKtDsl()),
getStdlibArtifactName(sdk, version),
version,
jvmTarget
)
}
}
@@ -30,6 +30,9 @@ open class KotlinNativeGradleConfigurator : KotlinWithGradleConfigurator() {
override val targetPlatform get() = KonanPlatforms.defaultKonanPlatform
@Suppress("DEPRECATION_ERROR")
override fun getTargetPlatform() = KonanPlatforms.CompatKonanPlatform
override val presentableText get() = PRESENTABLE_TEXT
companion object {
@@ -32,6 +32,9 @@ class KotlinGradleModuleConfigurator : KotlinWithGradleConfigurator() {
override val targetPlatform: TargetPlatform
get() = JvmPlatforms.defaultJvmPlatform
@Suppress("DEPRECATION_ERROR")
override fun getTargetPlatform() = JvmPlatforms.CompatJvmPlatform
override val presentableText: String
get() = "Java with Gradle"
@@ -33,6 +33,9 @@ class KotlinJsGradleModuleConfigurator : KotlinWithGradleConfigurator() {
override fun getMinimumSupportedVersion() = "1.1.0"
override fun getStdlibArtifactName(sdk: Sdk?, version: String): String = MAVEN_JS_STDLIB_ID
@Suppress("DEPRECATION_ERROR")
override fun getTargetPlatform() = JsPlatforms.CompatJsPlatform
override fun addElementsToFile(file: PsiFile, isTopLevelProjectFile: Boolean, version: String): Boolean {
val gradleVersion = fetchGradleVersion(file)
@@ -32,6 +32,21 @@ fun NewPlatform.toOldPlatform(): OldPlatform = when (val single = singleOrNull()
else -> error("Unknown platform $single")
}
fun OldPlatform.toNewPlatform(): NewPlatform = when (this) {
is CommonPlatforms.CompatCommonPlatform -> this
is JvmPlatforms.CompatJvmPlatform -> this
is JsPlatforms.CompatJsPlatform -> this
is KonanPlatforms.CompatKonanPlatform -> this
else -> error(
"Can't convert org.jetbrains.kotlin.resolve.TargetPlatform to org.jetbrains.kotlin.platform.TargetPlatform: " +
"non-Compat instance passed\n" +
"toString: $this\n" +
"class: ${this::class}\n" +
"hashCode: ${this.hashCode().toString(16)}"
)
}
fun IdePlatform<*, *>.toNewPlatform(): NewPlatform = when (this) {
is CommonIdePlatformKind.Platform -> CommonPlatforms.defaultCommonPlatform
is JvmIdePlatformKind.Platform -> JvmPlatforms.jvmPlatformByTargetVersion(this.version)
@@ -73,6 +73,9 @@ open class KotlinJavaModuleConfigurator protected constructor() : KotlinWithLibr
override val targetPlatform: TargetPlatform
get() = JvmPlatforms.defaultJvmPlatform
@Suppress("DEPRECATION_ERROR")
override fun getTargetPlatform() = JvmPlatforms.CompatJvmPlatform
override fun getLibraryJarDescriptors(sdk: Sdk?): List<LibraryJarDescriptor> {
var result = listOf(
LibraryJarDescriptor.RUNTIME_JAR,
@@ -42,6 +42,9 @@ open class KotlinJsModuleConfigurator : KotlinWithLibraryConfigurator() {
override val targetPlatform: TargetPlatform
get() = JsPlatforms.defaultJsPlatform
@Suppress("DEPRECATION_ERROR")
override fun getTargetPlatform() = JsPlatforms.CompatJsPlatform
override val presentableText: String
get() = JavaScript.FULL_NAME
@@ -25,6 +25,8 @@ import org.jetbrains.kotlin.config.ApiVersion
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.idea.versions.LibraryJarDescriptor
import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.platform.compat.toNewPlatform
import org.jetbrains.kotlin.platform.compat.toOldPlatform
enum class ConfigureKotlinStatus {
/** Kotlin is correctly configured using this configurator. */
@@ -50,7 +52,22 @@ interface KotlinProjectConfigurator {
val name: String
/*
We have to provide default for newer 'targetPlatform.get()' through delegation to deprecated 'getTargetPlatform()',
not the vice versa, to preserve binary compatibility with old inheritors which override only signature of 'getTargetPlatform'
New clients are encouraged to override both methods
*/
val targetPlatform: TargetPlatform
get() = @Suppress("DEPRECATION_ERROR") getTargetPlatform().toNewPlatform()
@Suppress("DEPRECATION_ERROR")
@Deprecated(
message = "This accessor is deprecated and will be removed soon, use API from 'org.jetbrains.kotlin.platform.*' packages instead",
replaceWith = ReplaceWith("targetPlatform"),
level = DeprecationLevel.ERROR
)
fun getTargetPlatform(): org.jetbrains.kotlin.resolve.TargetPlatform
fun updateLanguageVersion(module: Module, languageVersion: String?, apiVersion: String?, requiredStdlibVersion: ApiVersion, forTests: Boolean)
@@ -70,6 +70,9 @@ class KotlinJavaMavenConfigurator : KotlinMavenConfigurator(
override val targetPlatform: TargetPlatform
get() = JvmPlatforms.defaultJvmPlatform
@Suppress("DEPRECATION_ERROR")
override fun getTargetPlatform() = JvmPlatforms.CompatJvmPlatform
companion object {
private const val NAME = "maven"
const val TEST_LIB_ID = "kotlin-test"
@@ -45,6 +45,9 @@ class KotlinJavascriptMavenConfigurator :
override val targetPlatform: TargetPlatform
get() = JsPlatforms.defaultJsPlatform
@Suppress("DEPRECATION_ERROR")
override fun getTargetPlatform() = JsPlatforms.CompatJsPlatform
override fun getMinimumSupportedVersion() = "1.1.0"
companion object {