diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/AbstractKotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/AbstractKotlinPlugin.kt index 7540b65138c..37da76c6e7b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/AbstractKotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/AbstractKotlinPlugin.kt @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.gradle.internal.customizeKotlinDependencies import org.jetbrains.kotlin.gradle.model.builder.KotlinModelBuilder import org.jetbrains.kotlin.gradle.plugin.internal.JavaSourceSetsAccessor import org.jetbrains.kotlin.gradle.plugin.internal.MavenPluginConfigurator +import org.jetbrains.kotlin.gradle.plugin.internal.compatibilityConventionRegistrar import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.tasks.InspectClassesForMultiModuleIC import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider @@ -186,12 +187,10 @@ internal abstract class AbstractKotlinPlugin( kotlinSourceSet.kotlin.source(javaSourceSet.java) @Suppress("DEPRECATION") kotlinCompilation.source(kotlinSourceSet) - @Suppress("DEPRECATION") - javaSourceSet.addConvention(kotlinSourceSetDslName, kotlinSourceSet) + project.compatibilityConventionRegistrar.addConvention(javaSourceSet, kotlinSourceSetDslName, kotlinSourceSet) javaSourceSet.addExtension(kotlinSourceSetDslName, kotlinSourceSet.kotlin) } else { - @Suppress("DEPRECATION") - javaSourceSet.addConvention(kotlinSourceSetDslName, kotlinCompilation.defaultSourceSet) + project.compatibilityConventionRegistrar.addConvention(javaSourceSet, kotlinSourceSetDslName, kotlinCompilation.defaultSourceSet) javaSourceSet.addExtension(kotlinSourceSetDslName, kotlinCompilation.defaultSourceSet.kotlin) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt index 4099bddc200..b77f49600e9 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPluginWrapper.kt @@ -178,6 +178,11 @@ abstract class DefaultKotlinBasePlugin : KotlinBasePlugin { ProjectIsolationStartParameterAccessor.Factory::class, DefaultProjectIsolationStartParameterAccessorVariantFactory() ) + + factories.putIfAbsent( + CompatibilityConventionRegistrar.Factory::class, + DefaultCompatibilityConventionRegistrar.Factory() + ) } protected fun setupAttributeMatchingStrategy( diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/gradleUtils.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/gradleUtils.kt index 7eb00dac7f3..06b9af87961 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/gradleUtils.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/gradleUtils.kt @@ -22,22 +22,6 @@ import org.gradle.api.internal.HasConvention import org.gradle.api.plugins.ExtensionAware import org.gradle.api.plugins.ExtraPropertiesExtension -@Deprecated("Conventions are deprecated in Gradle") -internal inline fun Any.addConvention(name: String, plugin: T) { - // Verifying conventions are still available via reflection, - // so Gradle could remove them in Gradle 8.0 release - val conventionsIsAvailable = try { - Class.forName("org.gradle.api.internal.HasConvention") - true - } catch (_: ClassNotFoundException) { - false - } - - if (conventionsIsAvailable) { - (this as HasConvention).convention.plugins[name] = plugin - } -} - internal inline fun Any.addExtension(name: String, extension: T) = (this as ExtensionAware).extensions.add(T::class.java, name, extension) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrar.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrar.kt new file mode 100644 index 00000000000..4f5a241643e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrar.kt @@ -0,0 +1,38 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.gradle.plugin.internal + +import org.gradle.api.Project +import org.jetbrains.kotlin.gradle.plugin.VariantImplementationFactories +import org.jetbrains.kotlin.gradle.plugin.variantImplementationFactory + +/** + * The concept of conventions in Gradle is outdated and superseded by extensions. + * However, KGP has to maintain a few conventions for compatibility with old versions of AGP and the `kotlin-dsl` plugin. + * This registrar adds conventions for the Gradle versions < 8.2, while for Gradle 8.2+ it does nothing. + */ +internal interface CompatibilityConventionRegistrar { + fun addConvention(subject: Any, name: String, plugin: Any) + + interface Factory : VariantImplementationFactories.VariantImplementationFactory { + fun getInstance(): CompatibilityConventionRegistrar + } +} + +internal class DefaultCompatibilityConventionRegistrar : CompatibilityConventionRegistrar { + override fun addConvention(subject: Any, name: String, plugin: Any) { + // no-op + } + + class Factory : CompatibilityConventionRegistrar.Factory { + override fun getInstance() = DefaultCompatibilityConventionRegistrar() + + } +} + +internal val Project.compatibilityConventionRegistrar + get() = variantImplementationFactory() + .getInstance() \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/android/configurator/GradleConventionAddKotlinSourcesToAndroidSourceSetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/android/configurator/GradleConventionAddKotlinSourcesToAndroidSourceSetConfigurator.kt index d7afb939ab9..2bc70b7116d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/android/configurator/GradleConventionAddKotlinSourcesToAndroidSourceSetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/android/configurator/GradleConventionAddKotlinSourcesToAndroidSourceSetConfigurator.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle.plugin.sources.android.configurator import com.android.build.gradle.api.AndroidSourceSet import org.jetbrains.kotlin.gradle.plugin.* +import org.jetbrains.kotlin.gradle.plugin.internal.compatibilityConventionRegistrar import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget /* @@ -16,6 +17,6 @@ from this KotlinSourceSet. This mechanism is deprecated. @Suppress("DEPRECATION") internal object GradleConventionAddKotlinSourcesToAndroidSourceSetConfigurator : KotlinAndroidSourceSetConfigurator { override fun configure(target: KotlinAndroidTarget, kotlinSourceSet: KotlinSourceSet, androidSourceSet: AndroidSourceSet) { - androidSourceSet.addConvention(KOTLIN_DSL_NAME, kotlinSourceSet) + target.project.compatibilityConventionRegistrar.addConvention(androidSourceSet, KOTLIN_DSL_NAME, kotlinSourceSet) } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/gradle70/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt b/libraries/tools/kotlin-gradle-plugin/src/gradle70/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt index 286f8f8a4b0..e92a37d0fa2 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/gradle70/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/gradle70/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt @@ -161,4 +161,6 @@ private fun Project.registerVariantImplementations() { ArtifactTypeAttributeAccessorG70.ArtifactTypeAttributeAccessorVariantFactoryG70() factories[ProjectIsolationStartParameterAccessor.Factory::class] = ProjectIsolationStartParameterAccessorG70.Factory() + factories[CompatibilityConventionRegistrar.Factory::class] = + CompatibilityConventionRegistrarG70.Factory() } diff --git a/libraries/tools/kotlin-gradle-plugin/src/gradle70/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG70.kt b/libraries/tools/kotlin-gradle-plugin/src/gradle70/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG70.kt new file mode 100644 index 00000000000..81bbb328251 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/gradle70/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG70.kt @@ -0,0 +1,18 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.gradle.plugin.internal + +import org.gradle.api.internal.HasConvention + +internal class CompatibilityConventionRegistrarG70 : CompatibilityConventionRegistrar { + override fun addConvention(subject: Any, name: String, plugin: Any) { + (subject as HasConvention).convention.plugins[name] = plugin + } + + internal class Factory : CompatibilityConventionRegistrar.Factory { + override fun getInstance(): CompatibilityConventionRegistrar = CompatibilityConventionRegistrarG70() + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/gradle71/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt b/libraries/tools/kotlin-gradle-plugin/src/gradle71/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt index ad282389c0c..e1dfbfa1705 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/gradle71/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/gradle71/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt @@ -162,4 +162,6 @@ private fun Project.registerVariantImplementations() { ArtifactTypeAttributeAccessorG71.ArtifactTypeAttributeAccessorVariantFactoryG71() factories[ProjectIsolationStartParameterAccessor.Factory::class] = ProjectIsolationStartParameterAccessorG71.Factory() + factories[CompatibilityConventionRegistrar.Factory::class] = + CompatibilityConventionRegistrarG71.Factory() } diff --git a/libraries/tools/kotlin-gradle-plugin/src/gradle71/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG71.kt b/libraries/tools/kotlin-gradle-plugin/src/gradle71/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG71.kt new file mode 100644 index 00000000000..84b6869f755 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/gradle71/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG71.kt @@ -0,0 +1,20 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +@file:Suppress("DEPRECATION") + +package org.jetbrains.kotlin.gradle.plugin.internal + +import org.gradle.api.internal.HasConvention + +internal class CompatibilityConventionRegistrarG71 : CompatibilityConventionRegistrar { + override fun addConvention(subject: Any, name: String, plugin: Any) { + (subject as HasConvention).convention.plugins[name] = plugin + } + + internal class Factory : CompatibilityConventionRegistrar.Factory { + override fun getInstance(): CompatibilityConventionRegistrar = CompatibilityConventionRegistrarG71() + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/gradle74/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt b/libraries/tools/kotlin-gradle-plugin/src/gradle74/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt index dd30321d7fb..67913c76975 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/gradle74/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/gradle74/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt @@ -151,4 +151,6 @@ private fun Project.registerVariantImplementations() { MppTestReportHelperG74.MppTestReportHelperVariantFactoryG74() factories[ProjectIsolationStartParameterAccessor.Factory::class] = ProjectIsolationStartParameterAccessorG74.Factory() + factories[CompatibilityConventionRegistrar.Factory::class] = + CompatibilityConventionRegistrarG74.Factory() } diff --git a/libraries/tools/kotlin-gradle-plugin/src/gradle74/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG74.kt b/libraries/tools/kotlin-gradle-plugin/src/gradle74/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG74.kt new file mode 100644 index 00000000000..b1651470db6 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/gradle74/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG74.kt @@ -0,0 +1,20 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +@file:Suppress("DEPRECATION") + +package org.jetbrains.kotlin.gradle.plugin.internal + +import org.gradle.api.internal.HasConvention + +internal class CompatibilityConventionRegistrarG74 : CompatibilityConventionRegistrar { + override fun addConvention(subject: Any, name: String, plugin: Any) { + (subject as HasConvention).convention.plugins[name] = plugin + } + + internal class Factory : CompatibilityConventionRegistrar.Factory { + override fun getInstance(): CompatibilityConventionRegistrar = CompatibilityConventionRegistrarG74() + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/gradle75/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt b/libraries/tools/kotlin-gradle-plugin/src/gradle75/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt index 33dad6b4270..f87558d4f06 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/gradle75/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/gradle75/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt @@ -12,10 +12,7 @@ import org.gradle.api.Project import org.gradle.api.file.SourceDirectorySet import org.gradle.api.model.ObjectFactory import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry -import org.jetbrains.kotlin.gradle.plugin.internal.MppTestReportHelper -import org.jetbrains.kotlin.gradle.plugin.internal.MppTestReportHelperG75 -import org.jetbrains.kotlin.gradle.plugin.internal.ProjectIsolationStartParameterAccessor -import org.jetbrains.kotlin.gradle.plugin.internal.ProjectIsolationStartParameterAccessorG75 +import org.jetbrains.kotlin.gradle.plugin.internal.* import javax.inject.Inject private const val PLUGIN_VARIANT_NAME = "gradle75" @@ -154,4 +151,6 @@ private fun Project.registerVariantImplementations() { MppTestReportHelperG75.MppTestReportHelperVariantFactoryG75() factories[ProjectIsolationStartParameterAccessor.Factory::class] = ProjectIsolationStartParameterAccessorG75.Factory() + factories[CompatibilityConventionRegistrar.Factory::class] = + CompatibilityConventionRegistrarG75.Factory() } diff --git a/libraries/tools/kotlin-gradle-plugin/src/gradle75/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG75.kt b/libraries/tools/kotlin-gradle-plugin/src/gradle75/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG75.kt new file mode 100644 index 00000000000..135a8fcc893 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/gradle75/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG75.kt @@ -0,0 +1,20 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +@file:Suppress("DEPRECATION") + +package org.jetbrains.kotlin.gradle.plugin.internal + +import org.gradle.api.internal.HasConvention + +internal class CompatibilityConventionRegistrarG75 : CompatibilityConventionRegistrar { + override fun addConvention(subject: Any, name: String, plugin: Any) { + (subject as HasConvention).convention.plugins[name] = plugin + } + + internal class Factory : CompatibilityConventionRegistrar.Factory { + override fun getInstance(): CompatibilityConventionRegistrar = CompatibilityConventionRegistrarG75() + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/gradle76/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt b/libraries/tools/kotlin-gradle-plugin/src/gradle76/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt index 04abf3735e3..a8c7d2b394b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/gradle76/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/gradle76/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt @@ -12,8 +12,7 @@ import org.gradle.api.Project import org.gradle.api.file.SourceDirectorySet import org.gradle.api.model.ObjectFactory import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry -import org.jetbrains.kotlin.gradle.plugin.internal.ProjectIsolationStartParameterAccessor -import org.jetbrains.kotlin.gradle.plugin.internal.ProjectIsolationStartParameterAccessorG76 +import org.jetbrains.kotlin.gradle.plugin.internal.* import javax.inject.Inject private const val PLUGIN_VARIANT_NAME = "gradle76" @@ -151,4 +150,6 @@ private fun Project.registerVariantImplementations() { val factories = VariantImplementationFactoriesConfigurator.get(gradle) factories[ProjectIsolationStartParameterAccessor.Factory::class] = ProjectIsolationStartParameterAccessorG76.Factory() + factories[CompatibilityConventionRegistrar.Factory::class] = + CompatibilityConventionRegistrarG76.Factory() } diff --git a/libraries/tools/kotlin-gradle-plugin/src/gradle76/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG76.kt b/libraries/tools/kotlin-gradle-plugin/src/gradle76/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG76.kt new file mode 100644 index 00000000000..dc54358309f --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/gradle76/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG76.kt @@ -0,0 +1,20 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +@file:Suppress("DEPRECATION") + +package org.jetbrains.kotlin.gradle.plugin.internal + +import org.gradle.api.internal.HasConvention + +internal class CompatibilityConventionRegistrarG76 : CompatibilityConventionRegistrar { + override fun addConvention(subject: Any, name: String, plugin: Any) { + (subject as HasConvention).convention.plugins[name] = plugin + } + + internal class Factory : CompatibilityConventionRegistrar.Factory { + override fun getInstance(): CompatibilityConventionRegistrar = CompatibilityConventionRegistrarG76() + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/gradle80/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt b/libraries/tools/kotlin-gradle-plugin/src/gradle80/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt index 668039563e1..dbfd019ad26 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/gradle80/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/gradle80/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt @@ -12,6 +12,7 @@ import org.gradle.api.Project import org.gradle.api.file.SourceDirectorySet import org.gradle.api.model.ObjectFactory import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry +import org.jetbrains.kotlin.gradle.plugin.internal.* import javax.inject.Inject private const val PLUGIN_VARIANT_NAME = "gradle80" @@ -144,7 +145,8 @@ open class KotlinApiPlugin : KotlinBaseApiPlugin() { } } -@Suppress("UnusedReceiverParameter") private fun Project.registerVariantImplementations() { - + val factories = VariantImplementationFactoriesConfigurator.get(gradle) + factories[CompatibilityConventionRegistrar.Factory::class] = + CompatibilityConventionRegistrarG80.Factory() } diff --git a/libraries/tools/kotlin-gradle-plugin/src/gradle80/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG80.kt b/libraries/tools/kotlin-gradle-plugin/src/gradle80/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG80.kt new file mode 100644 index 00000000000..d43c8097fb0 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/gradle80/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG80.kt @@ -0,0 +1,20 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +@file:Suppress("DEPRECATION") + +package org.jetbrains.kotlin.gradle.plugin.internal + +import org.gradle.api.internal.HasConvention + +internal class CompatibilityConventionRegistrarG80 : CompatibilityConventionRegistrar { + override fun addConvention(subject: Any, name: String, plugin: Any) { + (subject as HasConvention).convention.plugins[name] = plugin + } + + internal class Factory : CompatibilityConventionRegistrar.Factory { + override fun getInstance(): CompatibilityConventionRegistrar = CompatibilityConventionRegistrarG80() + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/gradle81/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt b/libraries/tools/kotlin-gradle-plugin/src/gradle81/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt index 006aaf1d335..e736fb33fd6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/gradle81/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/gradle81/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt @@ -145,7 +145,8 @@ open class KotlinApiPlugin : KotlinBaseApiPlugin() { } } -@Suppress("UnusedReceiverParameter") private fun Project.registerVariantImplementations() { - + val factories = VariantImplementationFactoriesConfigurator.get(gradle) + factories[CompatibilityConventionRegistrar.Factory::class] = + CompatibilityConventionRegistrarG81.Factory() } diff --git a/libraries/tools/kotlin-gradle-plugin/src/gradle81/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG81.kt b/libraries/tools/kotlin-gradle-plugin/src/gradle81/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG81.kt new file mode 100644 index 00000000000..a687182897e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/gradle81/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG81.kt @@ -0,0 +1,20 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +@file:Suppress("DEPRECATION") + +package org.jetbrains.kotlin.gradle.plugin.internal + +import org.gradle.api.internal.HasConvention + +internal class CompatibilityConventionRegistrarG81 : CompatibilityConventionRegistrar { + override fun addConvention(subject: Any, name: String, plugin: Any) { + (subject as HasConvention).convention.plugins[name] = plugin + } + + internal class Factory : CompatibilityConventionRegistrar.Factory { + override fun getInstance(): CompatibilityConventionRegistrar = CompatibilityConventionRegistrarG81() + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt index d20e063ce08..b72e2592a80 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt @@ -167,4 +167,6 @@ private fun Project.registerVariantImplementations() { ArtifactTypeAttributeAccessorG6.ArtifactTypeAttributeAccessorVariantFactoryG6() factories[ProjectIsolationStartParameterAccessor.Factory::class] = ProjectIsolationStartParameterAccessorG6.Factory() + factories[CompatibilityConventionRegistrar.Factory::class] = + CompatibilityConventionRegistrarG6.Factory() } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG6.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG6.kt new file mode 100644 index 00000000000..aac262545c2 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/internal/CompatibilityConventionRegistrarG6.kt @@ -0,0 +1,18 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.gradle.plugin.internal + +import org.gradle.api.internal.HasConvention + +internal class CompatibilityConventionRegistrarG6 : CompatibilityConventionRegistrar { + override fun addConvention(subject: Any, name: String, plugin: Any) { + (subject as HasConvention).convention.plugins[name] = plugin + } + + internal class Factory : CompatibilityConventionRegistrar.Factory { + override fun getInstance(): CompatibilityConventionRegistrar = CompatibilityConventionRegistrarG6() + } +} \ No newline at end of file