IDEA-390110 [gradle] fix: remove non-model classes from getExtraProjectModelClasses

KotlinTarget, IdeaKotlinDependency, and Extras are not Gradle tooling models — they have no model builders and are never fetched by the IDE. Registering them in getExtraProjectModelClasses() is a no-op at best and misleading at worst.

(cherry picked from commit 7f9b7f92f44eedb0c9d1b86ea1b8801ad1de26b4)
IJ-CR-214557

GitOrigin-RevId: 46abece72862bb680302363bd51bee40a6ed52ac
This commit is contained in:
Sergei Vorobyov
2026-08-11 10:29:34 +00:00
committed by intellij-monorepo-bot
parent 0b87b7a8af
commit 4d0abf70d6
3 changed files with 23 additions and 49 deletions
@@ -32,7 +32,6 @@ import org.jetbrains.kotlin.idea.gradleJava.configuration.mpp.populateModuleDepe
import org.jetbrains.kotlin.idea.gradleJava.configuration.mpp.populateMppModuleDataNode
import org.jetbrains.kotlin.idea.gradleJava.configuration.utils.KotlinModuleUtils.getKotlinModuleId
import org.jetbrains.kotlin.idea.gradleTooling.KotlinMPPGradleModel
import org.jetbrains.kotlin.idea.gradleTooling.KotlinMPPGradleModelBuilder
import org.jetbrains.kotlin.idea.gradleTooling.KotlinMPPGradleModelImpl
import org.jetbrains.kotlin.idea.projectModel.KotlinCompilation
import org.jetbrains.kotlin.idea.projectModel.KotlinComponent
@@ -60,16 +59,16 @@ open class KotlinMppGradleProjectResolver : AbstractProjectResolverExtension() {
val moduleDataNode: DataNode<ModuleData>
}
override fun getToolingExtensionsClasses(): Set<Class<out Any>> {
override fun getToolingExtensionsClasses(): Set<Class<*>> {
return setOf(
KotlinMPPGradleModelBuilder::class.java, KotlinTarget::class.java,
IdeaKotlinDependency::class.java, Extras::class.java, Unit::class.java
KotlinMPPGradleModel::class.java, // Module: intellij.kotlin.gradle.tooling.impl
KotlinTarget::class.java, // Module: intellij.kotlin.base.project-model
IdeaKotlinDependency::class.java, // Library: kotlin-gradle-plugin-idea
Extras::class.java // Library: kotlin-tooling-core
)
}
override fun getExtraProjectModelClasses(): Set<Class<out Any>> {
return setOf(KotlinMPPGradleModel::class.java, KotlinTarget::class.java, IdeaKotlinDependency::class.java, Extras::class.java)
}
override fun getExtraProjectModelClasses(): Set<Class<*>> = setOf(KotlinMPPGradleModel::class.java)
override fun getExtraCommandLineArgs(): List<String> =
/**
@@ -14,7 +14,6 @@ import com.intellij.platform.diagnostic.telemetry.helpers.use
import org.gradle.tooling.model.idea.IdeaModule
import org.jetbrains.kotlin.idea.gradleJava.configuration.getMppModel
import org.jetbrains.kotlin.idea.gradleTooling.KotlinMPPGradleModel
import org.jetbrains.kotlin.idea.gradleTooling.KotlinMPPGradleModelBuilder
import org.jetbrains.kotlin.idea.projectModel.KotlinTarget
import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension
import org.jetbrains.plugins.gradle.util.GradleConstants
@@ -26,9 +25,12 @@ open class KotlinTestTasksResolver : AbstractProjectResolverExtension() {
internal const val ENABLED_REGISTRY_KEY = "kotlin.gradle.testing.enabled"
}
override fun getToolingExtensionsClasses(): Set<Class<out Any>> {
return setOf(KotlinMPPGradleModelBuilder::class.java, KotlinTarget::class.java, Unit::class.java)
}
override fun getToolingExtensionsClasses(): Set<Class<*>> = setOf(
KotlinMPPGradleModel::class.java, // Module: intellij.kotlin.gradle.tooling.impl
KotlinTarget::class.java, // Module: intellij.kotlin.base.project-model
)
override fun getExtraProjectModelClasses(): Set<Class<*>> = setOf(KotlinMPPGradleModel::class.java)
override fun populateModuleTasks(
gradleModule: IdeaModule,
@@ -15,9 +15,10 @@ import org.gradle.tooling.model.idea.IdeaModule
import org.gradle.tooling.model.idea.IdeaProject
import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinDependency
import org.jetbrains.kotlin.idea.gradleTooling.KotlinMPPGradleModelBuilder
import org.jetbrains.kotlin.idea.projectModel.KotlinCompilation
import org.jetbrains.kotlin.idea.gradleTooling.KotlinMPPGradleModel
import org.jetbrains.kotlin.idea.projectModel.KotlinTarget
import org.jetbrains.kotlin.tooling.core.Extras
import org.jetbrains.kotlin.utils.addIfNotNull
import org.jetbrains.plugins.gradle.service.execution.createMainInitScript
import org.jetbrains.plugins.gradle.service.execution.createTargetPathMapperInitScript
import org.jetbrains.plugins.gradle.service.modelAction.GradleIdeaModelHolder
@@ -67,46 +68,18 @@ fun <T : Any> buildGradleModel(
connector.connect().use { gradleConnection ->
val buildAction = GradleModelFetchAction(gradleVersion)
.addProjectImportModelProviders(
GradleClassProjectModelProvider.createAll(
clazz.java,
/* Representative of the `kotlin.project-module` module */
KotlinCompilation::class.java,
/* Representative of the `kotlin-tooling-core` library */
Extras::class.java,
/* Representative of the `kotlin-gradle-plugin-idea` library */
IdeaKotlinDependency::class.java,
/* Representative of the kotlin stdlib */
Unit::class.java
)
)
.addProjectImportModelProviders(
GradleClassBuildModelProvider.createAll(
IdeaProject::class.java
)
)
.addProjectImportModelProviders(GradleClassProjectModelProvider.createAll(clazz.java))
.addProjectImportModelProviders(GradleClassBuildModelProvider.createAll(IdeaProject::class.java))
val executionSettings = GradleExecutionSettings()
val targetPathMapperInitScript = createTargetPathMapperInitScript()
executionSettings.prependArguments(GradleConstants.INIT_SCRIPT_CMD_OPTION, targetPathMapperInitScript.toString())
val kotlinToolingExtensionClasses = mutableSetOf(
/* Representative of the `gradle-tooling` module */
KotlinMPPGradleModelBuilder::class.java,
/* Representative of the `kotlin.project-module` module */
KotlinCompilation::class.java,
/* Representative of the `kotlin-tooling-core` library */
Extras::class.java,
/* Representative of the `kotlin-gradle-plugin-idea` library */
IdeaKotlinDependency::class.java,
)
if (builderClass != null) {
kotlinToolingExtensionClasses.add(builderClass)
val kotlinToolingExtensionClasses = buildSet {
add(KotlinMPPGradleModel::class.java) // Module: intellij.kotlin.gradle.tooling.impl
add(KotlinTarget::class.java) // Module: intellij.kotlin.base.project-model
add(IdeaKotlinDependency::class.java) // Library: kotlin-gradle-plugin-idea
add(Extras::class.java) // Library: kotlin-tooling-core
addIfNotNull(builderClass)
}
val initScript = createMainInitScript(false, kotlinToolingExtensionClasses)
executionSettings.addInitScript(gradleVersion, initScript)