From 716e55d17131418e628476fc1170502b99c77e56 Mon Sep 17 00:00:00 2001 From: Dmitry Savvinov Date: Fri, 17 May 2019 13:22:58 +0300 Subject: [PATCH] [Compatibility] Restore KotlinProjectConfugirator.getTargetPlatform() --- .../KotlinAndroidGradleModuleConfigurator.kt | 13 ++++++++----- .../gradle/KotlinNativeGradleConfigurator.kt | 3 +++ .../KotlinGradleModuleConfigurator.kt | 3 +++ .../KotlinJsGradleModuleConfigurator.kt | 3 +++ .../kotlin/platform/compat/compatConversions.kt | 15 +++++++++++++++ .../KotlinJavaModuleConfigurator.kt | 3 +++ .../configuration/KotlinJsModuleConfigurator.kt | 3 +++ .../configuration/KotlinProjectConfigurator.kt | 17 +++++++++++++++++ .../KotlinJavaMavenConfigurator.kt | 3 +++ .../KotlinJavascriptMavenConfigurator.kt | 3 +++ 10 files changed, 61 insertions(+), 5 deletions(-) diff --git a/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidGradleModuleConfigurator.kt b/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidGradleModuleConfigurator.kt index 92013ea7bf1..4fbb8125914 100644 --- a/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidGradleModuleConfigurator.kt +++ b/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidGradleModuleConfigurator.kt @@ -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 ) } } diff --git a/idea/idea-gradle-native/src/org/jetbrains/kotlin/ide/konan/gradle/KotlinNativeGradleConfigurator.kt b/idea/idea-gradle-native/src/org/jetbrains/kotlin/ide/konan/gradle/KotlinNativeGradleConfigurator.kt index 4704ecdb54b..7520798307f 100644 --- a/idea/idea-gradle-native/src/org/jetbrains/kotlin/ide/konan/gradle/KotlinNativeGradleConfigurator.kt +++ b/idea/idea-gradle-native/src/org/jetbrains/kotlin/ide/konan/gradle/KotlinNativeGradleConfigurator.kt @@ -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 { diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleModuleConfigurator.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleModuleConfigurator.kt index bf23d1e2882..6017ca89828 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleModuleConfigurator.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleModuleConfigurator.kt @@ -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" diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinJsGradleModuleConfigurator.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinJsGradleModuleConfigurator.kt index ab05451ab73..eed0056db04 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinJsGradleModuleConfigurator.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinJsGradleModuleConfigurator.kt @@ -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) diff --git a/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/compat/compatConversions.kt b/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/compat/compatConversions.kt index eb9b00e02bd..07ae0b6c4b0 100644 --- a/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/compat/compatConversions.kt +++ b/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/compat/compatConversions.kt @@ -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) diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaModuleConfigurator.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaModuleConfigurator.kt index 092ec95b5f0..3e1c70f3673 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaModuleConfigurator.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaModuleConfigurator.kt @@ -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 { var result = listOf( LibraryJarDescriptor.RUNTIME_JAR, diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinJsModuleConfigurator.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinJsModuleConfigurator.kt index 7b2d9b4577c..0e3ed8f188c 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinJsModuleConfigurator.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinJsModuleConfigurator.kt @@ -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 diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinProjectConfigurator.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinProjectConfigurator.kt index fa7da49247a..cdf3f00193b 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinProjectConfigurator.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinProjectConfigurator.kt @@ -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) diff --git a/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/configuration/KotlinJavaMavenConfigurator.kt b/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/configuration/KotlinJavaMavenConfigurator.kt index 202514ed09d..607f03e04b0 100644 --- a/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/configuration/KotlinJavaMavenConfigurator.kt +++ b/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/configuration/KotlinJavaMavenConfigurator.kt @@ -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" diff --git a/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/configuration/KotlinJavascriptMavenConfigurator.kt b/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/configuration/KotlinJavascriptMavenConfigurator.kt index 1ead5fa0f46..81e112865f3 100644 --- a/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/configuration/KotlinJavascriptMavenConfigurator.kt +++ b/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/configuration/KotlinJavascriptMavenConfigurator.kt @@ -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 {