From eb5601e28bc3c9e0b1f04356ed4ec43c44052b86 Mon Sep 17 00:00:00 2001 From: Yaroslav Chernyshev Date: Thu, 9 Dec 2021 16:59:53 +0300 Subject: [PATCH] Fix KotlinSerializationImportHandler invalid plugin jar path * Migrate plugin jar path finding logics from compiler's one to KotlinArtifacts * Add integration test to check correct path in pluginClasspath GitOrigin-RevId: c0ed32f4099be0c916fef6844457c9d6f870d3e3 --- .../kotlin/idea/artifacts/KotlinArtifactNames.kt | 1 + .../kotlin/idea/artifacts/KotlinArtifacts.kt | 1 + ...compiler-plugins.kotlinx-serialization.common.iml | 1 + .../KotlinSerializationImportHandler.kt | 10 ++++------ .../build.gradle.kts | 12 ++++++++++++ .../settings.gradle.kts | 5 +++++ 6 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 plugins/kotlin/idea/tests/testData/gradle/kotlinSerializationPluginImportingTest/kotlinSerializationPluginClasspath/build.gradle.kts create mode 100644 plugins/kotlin/idea/tests/testData/gradle/kotlinSerializationPluginImportingTest/kotlinSerializationPluginClasspath/settings.gradle.kts diff --git a/plugins/kotlin/common/src/org/jetbrains/kotlin/idea/artifacts/KotlinArtifactNames.kt b/plugins/kotlin/common/src/org/jetbrains/kotlin/idea/artifacts/KotlinArtifactNames.kt index c1ae77519c36..519a56731e05 100644 --- a/plugins/kotlin/common/src/org/jetbrains/kotlin/idea/artifacts/KotlinArtifactNames.kt +++ b/plugins/kotlin/common/src/org/jetbrains/kotlin/idea/artifacts/KotlinArtifactNames.kt @@ -25,4 +25,5 @@ object KotlinArtifactNames { const val ALLOPEN_COMPILER_PLUGIN = "allopen-compiler-plugin.jar" const val NOARG_COMPILER_PLUGIN = "noarg-compiler-plugin.jar" const val SAM_WITH_RECEIVER_COMPILER_PLUGIN = "sam-with-receiver-compiler-plugin.jar" + const val KOTLINX_SERIALIZATION_COMPILER_PLUGIN = "kotlinx-serialization-compiler-plugin.jar" } \ No newline at end of file diff --git a/plugins/kotlin/common/src/org/jetbrains/kotlin/idea/artifacts/KotlinArtifacts.kt b/plugins/kotlin/common/src/org/jetbrains/kotlin/idea/artifacts/KotlinArtifacts.kt index e2eebabd4fc0..2cce6ba64ee7 100644 --- a/plugins/kotlin/common/src/org/jetbrains/kotlin/idea/artifacts/KotlinArtifacts.kt +++ b/plugins/kotlin/common/src/org/jetbrains/kotlin/idea/artifacts/KotlinArtifacts.kt @@ -47,6 +47,7 @@ abstract class KotlinArtifacts(val kotlincDistDir: File) { val allopenCompilerPlugin = File(kotlincLibDirectory, KotlinArtifactNames.ALLOPEN_COMPILER_PLUGIN) val noargCompilerPlugin = File(kotlincLibDirectory, KotlinArtifactNames.NOARG_COMPILER_PLUGIN) val samWithReceiverCompilerPlugin = File(kotlincLibDirectory, KotlinArtifactNames.SAM_WITH_RECEIVER_COMPILER_PLUGIN) + val kotlinxSerializationCompilerPlugin = File(kotlincLibDirectory, KotlinArtifactNames.KOTLINX_SERIALIZATION_COMPILER_PLUGIN) } private object ProductionKotlinArtifacts : KotlinArtifacts(run { diff --git a/plugins/kotlin/compiler-plugins/kotlinx-serialization/common/kotlin.compiler-plugins.kotlinx-serialization.common.iml b/plugins/kotlin/compiler-plugins/kotlinx-serialization/common/kotlin.compiler-plugins.kotlinx-serialization.common.iml index f7f7f6da53ca..c8be6b961f90 100644 --- a/plugins/kotlin/compiler-plugins/kotlinx-serialization/common/kotlin.compiler-plugins.kotlinx-serialization.common.iml +++ b/plugins/kotlin/compiler-plugins/kotlinx-serialization/common/kotlin.compiler-plugins.kotlinx-serialization.common.iml @@ -15,5 +15,6 @@ + \ No newline at end of file diff --git a/plugins/kotlin/compiler-plugins/kotlinx-serialization/common/src/org/jetbrains/kotlin/idea/compilerPlugin/kotlinxSerialization/KotlinSerializationImportHandler.kt b/plugins/kotlin/compiler-plugins/kotlinx-serialization/common/src/org/jetbrains/kotlin/idea/compilerPlugin/kotlinxSerialization/KotlinSerializationImportHandler.kt index 397a0821a65c..dd3d26f0341a 100644 --- a/plugins/kotlin/compiler-plugins/kotlinx-serialization/common/src/org/jetbrains/kotlin/idea/compilerPlugin/kotlinxSerialization/KotlinSerializationImportHandler.kt +++ b/plugins/kotlin/compiler-plugins/kotlinx-serialization/common/src/org/jetbrains/kotlin/idea/compilerPlugin/kotlinxSerialization/KotlinSerializationImportHandler.kt @@ -3,18 +3,16 @@ package org.jetbrains.kotlin.idea.compilerPlugin.kotlinxSerialization import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments +import org.jetbrains.kotlin.idea.artifacts.KotlinArtifactNames +import org.jetbrains.kotlin.idea.artifacts.KotlinArtifacts import org.jetbrains.kotlin.idea.facet.KotlinFacet -import org.jetbrains.kotlin.utils.PathUtil import java.io.File object KotlinSerializationImportHandler { - private const val pluginJpsJarName = "kotlinx-serialization-compiler-plugin.jar" - - val PLUGIN_JPS_JAR: String - get() = File(PathUtil.kotlinPathsForIdeaPlugin.libPath, pluginJpsJarName).absolutePath + val PLUGIN_JPS_JAR: String by lazy { KotlinArtifacts.instance.kotlinxSerializationCompilerPlugin.absolutePath } fun isPluginJarPath(path: String): Boolean { - return path.endsWith(pluginJpsJarName) + return path.endsWith(KotlinArtifactNames.KOTLINX_SERIALIZATION_COMPILER_PLUGIN) } fun modifyCompilerArguments(facet: KotlinFacet, buildSystemPluginJar: String) { diff --git a/plugins/kotlin/idea/tests/testData/gradle/kotlinSerializationPluginImportingTest/kotlinSerializationPluginClasspath/build.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/kotlinSerializationPluginImportingTest/kotlinSerializationPluginClasspath/build.gradle.kts new file mode 100644 index 000000000000..3d57ba4591b9 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/kotlinSerializationPluginImportingTest/kotlinSerializationPluginClasspath/build.gradle.kts @@ -0,0 +1,12 @@ +plugins { + kotlin("jvm") version "{{kotlin_plugin_version}}" + kotlin("plugin.serialization") version "{{kotlin_plugin_version}}" +} + +repositories { + { { kts_kotlin_plugin_repositories } } +} + +dependencies { + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.1") +} \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/gradle/kotlinSerializationPluginImportingTest/kotlinSerializationPluginClasspath/settings.gradle.kts b/plugins/kotlin/idea/tests/testData/gradle/kotlinSerializationPluginImportingTest/kotlinSerializationPluginClasspath/settings.gradle.kts new file mode 100644 index 000000000000..93484c47dd57 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/gradle/kotlinSerializationPluginImportingTest/kotlinSerializationPluginClasspath/settings.gradle.kts @@ -0,0 +1,5 @@ +pluginManagement { + repositories { + { { kts_kotlin_plugin_repositories } } + } +} \ No newline at end of file