From a35ded787dc2239c51c0f61adf837e01ebce823e Mon Sep 17 00:00:00 2001 From: Andrey Cherkasov Date: Thu, 25 Jun 2026 22:15:02 +0400 Subject: [PATCH] [kotlin] KTIJ-38940 Fix `kotlin-reflect` version added by the quick-fix in Maven and JPS projects `AddReflectionQuickFixFactory` determines the version of `kotlin-reflect` through `KotlinLibraryVersionProvider`. This works correctly for Gradle via `KotlinGradlePluginLibraryVersionProvider`, but fails for Maven and JPS projects because `DefaultKotlinLibraryVersionProvider` only provides versions for `kotlinx-coroutines-core`, `kotlinx-datetime`, and `kotlinx-serialization-json`. Unlike these libraries, `kotlin-reflect` always uses the same version as the Kotlin compiler and therefore does not require a dedicated version mapping. As a result, `DefaultKotlinLibraryVersionProvider` returns `null`, causing `AddReflectionQuickFixFactory` to fall back to `KotlinPluginLayout.standaloneCompilerVersion.artifactVersion` instead of using the project's Kotlin version. This change makes `AddReflectionQuickFixFactory` use the project's Kotlin version when adding the `kotlin-reflect` dependency in Maven and JPS projects. (cherry picked from commit 80f489bb40569589ffe1c028e4d5da92aa61e7e7) IJ-CR-214534 GitOrigin-RevId: c74cd8abdab362f9bc1588c6df080c627d760d71 --- .../k2/codeinsight/fixes/AddReflectionQuickFixFactory.kt | 6 ++---- .../testData/languageFeature/addKotlinReflect/pom.xml.after | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/AddReflectionQuickFixFactory.kt b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/AddReflectionQuickFixFactory.kt index d6d64516d98e..e6fcaeb876d8 100644 --- a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/AddReflectionQuickFixFactory.kt +++ b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/AddReflectionQuickFixFactory.kt @@ -10,9 +10,9 @@ import org.jetbrains.kotlin.idea.base.util.module import org.jetbrains.kotlin.idea.codeinsight.api.applicators.fixes.KotlinQuickFixFactory import org.jetbrains.kotlin.idea.compiler.configuration.KotlinPluginLayout import org.jetbrains.kotlin.idea.configuration.KotlinBuildSystemDependencyManager -import org.jetbrains.kotlin.idea.configuration.KotlinLibraryVersionProvider import org.jetbrains.kotlin.idea.configuration.isProjectSyncPendingOrInProgress import org.jetbrains.kotlin.idea.configuration.withScope +import org.jetbrains.kotlin.idea.facet.getRuntimeLibraryVersion import org.jetbrains.kotlin.idea.inspections.libraries.AddKotlinLibraryQuickFix internal object AddReflectionQuickFixFactory { @@ -27,9 +27,7 @@ internal object AddReflectionQuickFixFactory { ?: return@ModCommandBased emptyList() if (dependencyManager.isProjectSyncPendingOrInProgress()) return@ModCommandBased emptyList() - val version = KotlinLibraryVersionProvider.EP_NAME.extensionList.firstNotNullOfOrNull { - it.getVersion(module, GROUP_ID, ARTIFACT_ID) - } ?: KotlinPluginLayout.standaloneCompilerVersion.artifactVersion + val version = (getRuntimeLibraryVersion(module) ?: KotlinPluginLayout.standaloneCompilerVersion).artifactVersion val virtualFile = element.containingFile.virtualFile val scope = if (virtualFile != null && ProjectFileIndex.getInstance(module.project).isInTestSourceContent(virtualFile)) { diff --git a/plugins/kotlin/maven/tests/testData/languageFeature/addKotlinReflect/pom.xml.after b/plugins/kotlin/maven/tests/testData/languageFeature/addKotlinReflect/pom.xml.after index 5cf87317cac3..f42b030bc80f 100644 --- a/plugins/kotlin/maven/tests/testData/languageFeature/addKotlinReflect/pom.xml.after +++ b/plugins/kotlin/maven/tests/testData/languageFeature/addKotlinReflect/pom.xml.after @@ -25,7 +25,7 @@ org.jetbrains.kotlin kotlin-reflect - 2.3.20 + 2.1.0