From cf31cc52341e2be51787ea6847bd56eb7b733b3e Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Sat, 13 Dec 2025 00:32:04 +0100 Subject: [PATCH] [kotlin] KTIJ-36850 Move `AbstractReferenceResolveWithCompilerPluginsWithLibTest.kt` to `intellij.kotlin.base.test` Change the code so that there's no dependency on the `kotlin.bundled-compiler-plugins-support` module, which is considered to be K2-specific GitOrigin-RevId: b661aaa4858174136c0e82a4d2198464df2e6343 --- .../intellij.kotlin.base.test/BUILD.bazel | 2 ++ .../intellij.kotlin.base.test.iml | 2 ++ ...ceResolveWithCompilerPluginsWithLibTest.kt | 23 +++++++++++++++---- 3 files changed, 23 insertions(+), 4 deletions(-) rename plugins/kotlin/{idea/tests => intellij.kotlin.base.test}/test/org/jetbrains/kotlin/idea/resolve/AbstractReferenceResolveWithCompilerPluginsWithLibTest.kt (74%) 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 {