diff --git a/plugins/kotlin/intellij.kotlin.base.test/BUILD.bazel b/plugins/kotlin/intellij.kotlin.base.test/BUILD.bazel
index bdf959eaca5b..935540b943f4 100644
--- a/plugins/kotlin/intellij.kotlin.base.test/BUILD.bazel
+++ b/plugins/kotlin/intellij.kotlin.base.test/BUILD.bazel
@@ -70,6 +70,8 @@ jvm_library(
"//platform/platform-util-io:ide-util-io",
"@lib//:kotlin-test",
"//plugins/kotlin/completion/tests-shared:kotlin-completion-tests-shared_test_lib",
+ "//java/openapi:java",
+ "//java/idea-ui:ui",
]
)
### auto-generated section `build intellij.kotlin.base.test` end
diff --git a/plugins/kotlin/intellij.kotlin.base.test/intellij.kotlin.base.test.iml b/plugins/kotlin/intellij.kotlin.base.test/intellij.kotlin.base.test.iml
index efd4886f408f..6715c9e4004b 100644
--- a/plugins/kotlin/intellij.kotlin.base.test/intellij.kotlin.base.test.iml
+++ b/plugins/kotlin/intellij.kotlin.base.test/intellij.kotlin.base.test.iml
@@ -59,5 +59,7 @@
+
+
\ No newline at end of file
diff --git a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/resolve/AbstractReferenceResolveWithCompilerPluginsWithLibTest.kt b/plugins/kotlin/intellij.kotlin.base.test/test/org/jetbrains/kotlin/idea/resolve/AbstractReferenceResolveWithCompilerPluginsWithLibTest.kt
similarity index 74%
rename from plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/resolve/AbstractReferenceResolveWithCompilerPluginsWithLibTest.kt
rename to plugins/kotlin/intellij.kotlin.base.test/test/org/jetbrains/kotlin/idea/resolve/AbstractReferenceResolveWithCompilerPluginsWithLibTest.kt
index 1f07f5d33ae0..6022b1c36fdf 100644
--- a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/resolve/AbstractReferenceResolveWithCompilerPluginsWithLibTest.kt
+++ b/plugins/kotlin/intellij.kotlin.base.test/test/org/jetbrains/kotlin/idea/resolve/AbstractReferenceResolveWithCompilerPluginsWithLibTest.kt
@@ -1,11 +1,12 @@
-// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
+// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.kotlin.idea.resolve
import com.intellij.jarRepository.JarRepositoryManager
+import com.intellij.openapi.application.PathManager
import com.intellij.openapi.project.Project
import org.jetbrains.idea.maven.utils.library.RepositoryLibraryProperties
-import org.jetbrains.kotlin.idea.fir.extensions.KotlinK2BundledCompilerPlugins
import java.io.File
+import java.nio.file.Path
import kotlin.io.path.absolutePathString
abstract class AbstractReferenceResolveWithCompilerPluginsWithLibTest : AbstractReferenceResolveWithLibTest() {
@@ -42,6 +43,20 @@ private fun Project.resolveAdditionalLibClasspath(): List {
return dependencyCoordinates.map(::loadSingleJarFromMaven)
}
+/**
+ * This variable dynamically resolves the location of the `SerializationComponentRegistrar` class
+ * to determine the associated plugin's jar path.
+ *
+ * It is used to avoid direct dependency on the [org.jetbrains.kotlin.idea.fir.extensions.KotlinK2BundledCompilerPlugins].
+ */
+private val KOTLINX_SERIALIZATION_COMPILER_PLUGIN_PATH: Path
+ get() {
+ // Hack to avoid using KotlinK2BundledCompilerPlugins explicitly
+ val registrarClass = Class.forName("org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationComponentRegistrar")
+
+ return PathManager.getJarForClass(registrarClass) ?: error("Jar file for $registrarClass not found")
+ }
+
private val additionalLibCompilationOptions: List
get() {
/*
@@ -50,10 +65,10 @@ private val additionalLibCompilationOptions: List
The plugin jar should contain both K1 and K2 plugin implementations.
*/
val compilerPlugins = listOf(
- KotlinK2BundledCompilerPlugins.KOTLINX_SERIALIZATION_COMPILER_PLUGIN
+ KOTLINX_SERIALIZATION_COMPILER_PLUGIN_PATH
)
- return compilerPlugins.map { "-Xplugin=${it.bundledJarLocation.absolutePathString()}" }
+ return compilerPlugins.map { "-Xplugin=${it.absolutePathString()}" }
}
fun Project.loadSingleJarFromMaven(mavenCoordinates: String): File {