diff --git a/kotlin-native/Interop/Indexer/build.gradle.kts b/kotlin-native/Interop/Indexer/build.gradle.kts index 6a03fddc6c2..a361aac64b3 100644 --- a/kotlin-native/Interop/Indexer/build.gradle.kts +++ b/kotlin-native/Interop/Indexer/build.gradle.kts @@ -142,9 +142,6 @@ sourceSets { srcDirs("prebuilt/nativeInteropStubs/kotlin") } kotlin{ - target { - - } } } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SimpleKotlinGradleIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SimpleKotlinGradleIT.kt index 33ec094ab60..648d01c3eaa 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SimpleKotlinGradleIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SimpleKotlinGradleIT.kt @@ -246,4 +246,13 @@ class SimpleKotlinGradleIT : KGPBaseTest() { build("validateExternalPlugins") } } + + @DisplayName("Accessing Kotlin SourceSet in KotlinDSL") + @GradleTestVersions(maxVersion = TestVersions.Gradle.G_7_1) + @GradleTest + internal fun kotlinDslSourceSets(gradleVersion: GradleVersion) { + project("sourceSetsKotlinDsl", gradleVersion) { + build("assemble") + } + } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/sourceSetsKotlinDsl/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/sourceSetsKotlinDsl/build.gradle.kts new file mode 100644 index 00000000000..d4ea8cbb183 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/sourceSetsKotlinDsl/build.gradle.kts @@ -0,0 +1,16 @@ +plugins { + id("org.jetbrains.kotlin.jvm") +} + +repositories { + mavenLocal() + mavenCentral() +} + +sourceSets { + main { + kotlin { + setSrcDirs(listOf("src/main/kotlin", "src/shared/kotlin")) + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/sourceSetsKotlinDsl/src/main/kotlin/helloWorld.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/sourceSetsKotlinDsl/src/main/kotlin/helloWorld.kt new file mode 100644 index 00000000000..2a60ba766ca --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/sourceSetsKotlinDsl/src/main/kotlin/helloWorld.kt @@ -0,0 +1,12 @@ +/* + * 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 sourceSetsKotlinDsl + +import sourceSetsKotlinDsl.shared.Greeter + +fun main() { + Greeter("World").printGreet() +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/sourceSetsKotlinDsl/src/shared/kotlin/Greeter.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/sourceSetsKotlinDsl/src/shared/kotlin/Greeter.kt new file mode 100644 index 00000000000..0d3f8f3ddef --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/sourceSetsKotlinDsl/src/shared/kotlin/Greeter.kt @@ -0,0 +1,12 @@ +/* + * 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 sourceSetsKotlinDsl.shared + +class Greeter(private val name: String) { + fun printGreet() { + println("Hello, $name!") + } +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/model/builder/KotlinModelBuilder.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/model/builder/KotlinModelBuilder.kt index d126c5b7dd6..d9f4a5f29ce 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/model/builder/KotlinModelBuilder.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/model/builder/KotlinModelBuilder.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.gradle.model.builder import org.gradle.api.Project import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.ProjectDependency -import org.gradle.api.plugins.JavaPluginConvention +import org.gradle.api.file.SourceDirectorySet import org.gradle.tooling.provider.model.ToolingModelBuilder import org.jetbrains.kotlin.gradle.model.CompilerArguments import org.jetbrains.kotlin.gradle.model.KotlinProject @@ -17,7 +17,7 @@ import org.jetbrains.kotlin.gradle.model.impl.CompilerArgumentsImpl import org.jetbrains.kotlin.gradle.model.impl.KotlinProjectImpl import org.jetbrains.kotlin.gradle.model.impl.SourceSetImpl import org.jetbrains.kotlin.gradle.plugin.* -import org.jetbrains.kotlin.gradle.plugin.getConvention +import org.jetbrains.kotlin.gradle.plugin.internal.JavaSourceSetsAccessor import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile @@ -76,16 +76,19 @@ class KotlinModelBuilder(private val kotlinPluginVersion: String, private val an private fun Project.pathOrName() = if (path == ":") name else path private fun AbstractKotlinCompile<*>.createSourceSet(project: Project, projectType: KotlinProject.ProjectType): SourceSet? { - val javaSourceSet = - project.convention.findPlugin(JavaPluginConvention::class.java)?.sourceSets?.find { it.name == sourceSetName.get() } - val kotlinSourceSet = - javaSourceSet?.getConvention(if (projectType == KotlinProject.ProjectType.PLATFORM_JS) KOTLIN_JS_DSL_NAME else KOTLIN_DSL_NAME) as? KotlinSourceSet + val javaSourceSet = project.gradle + .variantImplementationFactory() + .getInstance(project) + .sourceSetsIfAvailable + ?.find { it.name == sourceSetName.get() } + @Suppress("DEPRECATION") val kotlinSourceSet: SourceDirectorySet? = javaSourceSet + ?.getExtension(if (projectType == KotlinProject.ProjectType.PLATFORM_JS) KOTLIN_JS_DSL_NAME else KOTLIN_DSL_NAME) return if (kotlinSourceSet != null) { SourceSetImpl( sourceSetName.get(), if (sourceSetName.get().contains("test", true)) SourceSet.SourceSetType.TEST else SourceSet.SourceSetType.PRODUCTION, friendSourceSets.get(), - kotlinSourceSet.kotlin.srcDirs, + kotlinSourceSet.srcDirs, javaSourceSet.resources.srcDirs, destinationDirectory.get().asFile, javaSourceSet.output.resourcesDir!!, diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinMultiplatformPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinMultiplatformPlugin.kt index f4d0464b69c..f7d719d0aa5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinMultiplatformPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinMultiplatformPlugin.kt @@ -194,12 +194,8 @@ open class KotlinPlatformImplementationPluginBase(platformName: String) : Kotlin @Deprecated("Retained for older Kotlin/Native MPP plugin binary compatibility") protected val SourceSet.kotlin: SourceDirectorySet? get() { - // Access through reflection, because another project's KotlinSourceSet might be loaded - // by a different class loader: - val convention = (getConvention("kotlin") ?: getConvention("kotlin2js")) ?: return null - val kotlinSourceSetIface = convention.javaClass.interfaces.find { it.name == KotlinSourceSet::class.qualifiedName } - val getKotlin = kotlinSourceSetIface?.methods?.find { it.name == "getKotlin" } ?: return null - return getKotlin(convention) as? SourceDirectorySet + @Suppress("DEPRECATION") + return getExtension(KOTLIN_DSL_NAME) ?: getExtension(KOTLIN_JS_DSL_NAME) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt index 26a1cbad0e5..d27cdd9f65b 100755 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt @@ -35,6 +35,7 @@ import org.jetbrains.kotlin.gradle.internal.checkAndroidAnnotationProcessorDepen import org.jetbrains.kotlin.gradle.internal.customizeKotlinDependencies import org.jetbrains.kotlin.gradle.logging.kotlinDebug import org.jetbrains.kotlin.gradle.model.builder.KotlinModelBuilder +import org.jetbrains.kotlin.gradle.plugin.AbstractAndroidProjectHandler.Companion.kotlinSourceSetNameForAndroidSourceSet import org.jetbrains.kotlin.gradle.plugin.internal.JavaSourceSetsAccessor import org.jetbrains.kotlin.gradle.plugin.internal.MavenPluginConfigurator import org.jetbrains.kotlin.gradle.plugin.mpp.* @@ -60,6 +61,7 @@ internal const val COMPILER_CLASSPATH_CONFIGURATION_NAME = "kotlinCompilerClassp internal const val KLIB_COMMONIZER_CLASSPATH_CONFIGURATION_NAME = "kotlinKlibCommonizerClasspath" val KOTLIN_DSL_NAME = "kotlin" +@Deprecated("Should be removed with 'platform.js' plugin removal") val KOTLIN_JS_DSL_NAME = "kotlin2js" val KOTLIN_OPTIONS_DSL_NAME = "kotlinOptions" @@ -491,7 +493,7 @@ internal abstract class AbstractKotlinPlugin( .getInstance(project) .sourceSets - val kotlinSourceSetDslName = when (kotlinTarget.platformType) { + @Suppress("DEPRECATION") val kotlinSourceSetDslName = when (kotlinTarget.platformType) { KotlinPlatformType.js -> KOTLIN_JS_DSL_NAME else -> KOTLIN_DSL_NAME } @@ -508,9 +510,13 @@ internal abstract class AbstractKotlinPlugin( val kotlinSourceSet = project.kotlinExtension.sourceSets.maybeCreate(kotlinCompilation.name) kotlinSourceSet.kotlin.source(javaSourceSet.java) kotlinCompilation.source(kotlinSourceSet) + @Suppress("DEPRECATION") javaSourceSet.addConvention(kotlinSourceSetDslName, kotlinSourceSet) + javaSourceSet.addExtension(kotlinSourceSetDslName, kotlinSourceSet.kotlin) } else { + @Suppress("DEPRECATION") javaSourceSet.addConvention(kotlinSourceSetDslName, kotlinCompilation.defaultSourceSet) + javaSourceSet.addExtension(kotlinSourceSetDslName, kotlinCompilation.defaultSourceSet.kotlin) } } @@ -868,45 +874,6 @@ abstract class AbstractAndroidProjectHandler(private val kotlinConfigurationTool ) } } - - // Then also add the Kotlin compilation dependencies (which include the dependencies from all source sets that - // take part in the compilation) to Android source sets that are only included into a single variant corresponding - // to that compilation. This is needed in order for the dependencies to get propagated to - // the test variants; see KT-29343; - - // Trivial mapping of Android variants to Android source set names is impossible here, - // because some variants have their dedicated source sets with mismatching names, - // because some variants have their dedicated source sets with mismatching names, - // e.g. variant 'fooBarDebugAndroidTest' <-> source set 'androidTestFooBarDebug' - - // In single-platform projects, the Kotlin compilations already reference the Android plugin's configurations by the names, - // so there are no such separate things as the configurations of the compilations, and there's no need to setup the - // extendsFrom relationship. - if (kotlinAndroidTarget.disambiguationClassifier != null) { - - val sourceSetToVariants = mutableMapOf>().apply { - forEachVariant(project) { variant -> - for (sourceSet in variant.sourceSets) { - val androidSourceSet = sourceSet as? AndroidSourceSet ?: continue - getOrPut(androidSourceSet) { mutableListOf() }.add(variant) - } - } - } - - for ((androidSourceSet, variants) in sourceSetToVariants) { - val variant = variants.singleOrNull() - ?: continue // skip source sets that are included in multiple Android variants - - val compilation = kotlinAndroidTarget.compilations.getByName(getVariantName(variant)) - addDependenciesToAndroidSourceSet( - androidSourceSet, - compilation.apiConfigurationName, - compilation.implementationConfigurationName, - compilation.compileOnlyConfigurationName, - compilation.runtimeOnlyConfigurationName - ) - } - } } private fun addAndroidUnitTestTasksAsDependenciesToAllTest(project: Project) { @@ -956,7 +923,12 @@ abstract class AbstractAndroidProjectHandler(private val kotlinConfigurationTool // Register the source only after the task is created, because the task is required for that: compilation.source(defaultSourceSet) - compilation.androidVariant.forEachKotlinSourceSet { kotlinSourceSet -> compilation.source(kotlinSourceSet) } + compilation.androidVariant.forEachKotlinSourceSet( + compilation.target as KotlinAndroidTarget, + project.kotlinExtension + ) { kotlinSourceSet -> + compilation.source(kotlinSourceSet) + } } private fun postprocessVariant( @@ -985,9 +957,22 @@ abstract class AbstractAndroidProjectHandler(private val kotlinConfigurationTool } } -internal inline fun BaseVariant.forEachKotlinSourceSet(action: (KotlinSourceSet) -> Unit) { +internal inline fun BaseVariant.forEachKotlinSourceSet( + kotlinAndroidTarget: KotlinAndroidTarget, + kotlinExtension: KotlinProjectExtension, + action: (KotlinSourceSet) -> Unit +) { sourceSets - .mapNotNull { provider -> provider.getConvention(KOTLIN_DSL_NAME) as? KotlinSourceSet } + .mapNotNull { provider -> + val kotlinSourceSetName = kotlinSourceSetNameForAndroidSourceSet(kotlinAndroidTarget, provider.name) + kotlinExtension.sourceSets.findByName(kotlinSourceSetName) + } + .forEach(action) +} + +internal inline fun BaseVariant.forEachKotlinSourceDirectorySet(action: (SourceDirectorySet) -> Unit) { + sourceSets + .mapNotNull { it.getExtension(KOTLIN_DSL_NAME) } .forEach(action) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/SubpluginEnvironment.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/SubpluginEnvironment.kt index cb2fd707606..5bf6e6f3a88 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/SubpluginEnvironment.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/SubpluginEnvironment.kt @@ -94,8 +94,8 @@ internal fun addCompilationSourcesToExternalCompileTask( task: TaskProvider> ) { if (compilation is KotlinJvmAndroidCompilation) { - compilation.androidVariant.forEachKotlinSourceSet { sourceSet -> - task.configure { it.setSource(sourceSet.kotlin) } + compilation.androidVariant.forEachKotlinSourceDirectorySet { sourceSet -> + task.configure { it.setSource(sourceSet) } } compilation.androidVariant.forEachJavaSourceDir { sources -> task.configure { it.setSource(sources.dir) } 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 43aa8617d48..84afcd7c487 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 @@ -14,11 +14,14 @@ * limitations under the License. */ +@file:Suppress("DEPRECATION") + package org.jetbrains.kotlin.gradle.plugin import org.gradle.api.internal.HasConvention import org.gradle.api.plugins.ExtensionAware +@Deprecated("Conventions are deprecated in Gradle") internal inline fun Any.addConvention(name: String, plugin: T) { (this as HasConvention).convention.plugins[name] = plugin } @@ -26,5 +29,5 @@ internal inline fun Any.addConvention(name: String, plugin: T) internal inline fun Any.addExtension(name: String, extension: T) = (this as ExtensionAware).extensions.add(T::class.java, name, extension) -internal fun Any.getConvention(name: String): Any? = - (this as HasConvention).convention.plugins[name] \ No newline at end of file +internal inline fun Any.getExtension(name: String): T? = + (this as ExtensionAware).extensions.getByName(name) as T? diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/syncKotlinAndAndroidSourceSets.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/syncKotlinAndAndroidSourceSets.kt index 6773c645e6b..6781d2ffda7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/syncKotlinAndAndroidSourceSets.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/syncKotlinAndAndroidSourceSets.kt @@ -7,15 +7,14 @@ package org.jetbrains.kotlin.gradle.plugin.mpp import com.android.build.gradle.BaseExtension import com.android.build.gradle.api.AndroidSourceSet -import org.gradle.api.Project +import org.gradle.api.file.SourceDirectorySet +import org.gradle.api.internal.plugins.DslObject import org.jetbrains.kotlin.gradle.dsl.kotlinExtension import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.AbstractAndroidProjectHandler.Companion.kotlinSourceSetNameForAndroidSourceSet import org.jetbrains.kotlin.gradle.plugin.addConvention -import org.jetbrains.kotlin.gradle.plugin.sources.KotlinSourceSetFactory import org.jetbrains.kotlin.gradle.plugin.sources.KotlinSourceSetFactory.Companion.defaultSourceFolder -import java.io.File internal fun syncKotlinAndAndroidSourceSets(target: KotlinAndroidTarget) { val project = target.project @@ -24,7 +23,7 @@ internal fun syncKotlinAndAndroidSourceSets(target: KotlinAndroidTarget) { android.sourceSets.all { androidSourceSet -> val kotlinSourceSetName = kotlinSourceSetNameForAndroidSourceSet(target, androidSourceSet.name) val kotlinSourceSet = project.kotlinExtension.sourceSets.maybeCreate(kotlinSourceSetName) - androidSourceSet.kotlinSourceSet = kotlinSourceSet + androidSourceSet.addKotlinSources(kotlinSourceSet) createDefaultDependsOnEdges(target, kotlinSourceSet, androidSourceSet) syncKotlinAndAndroidSourceDirs(target, kotlinSourceSet, androidSourceSet) @@ -36,14 +35,13 @@ internal fun syncKotlinAndAndroidSourceSets(target: KotlinAndroidTarget) { } } -internal var AndroidSourceSet.kotlinSourceSet: KotlinSourceSet - get() = checkNotNull(kotlinSourceSetOrNull) { "Missing kotlinSourceSet for Android source set $name" } - private set(value) { - addConvention(KOTLIN_DSL_NAME, value) - } +internal val AndroidSourceSet.kotlinSourceSet: SourceDirectorySet + get() = checkNotNull(getExtension(KOTLIN_DSL_NAME)) { "Missing kotlinSourceSet for Android source set $name" } -internal val AndroidSourceSet.kotlinSourceSetOrNull: KotlinSourceSet? - get() = getConvention(KOTLIN_DSL_NAME) as? KotlinSourceSet +internal fun AndroidSourceSet.addKotlinSources(kotlinSourceSet: KotlinSourceSet) { + @Suppress("DEPRECATION") addConvention(KOTLIN_DSL_NAME, kotlinSourceSet) + DslObject(this).addExtension(KOTLIN_DSL_NAME, kotlinSourceSet.kotlin) +} private fun createDefaultDependsOnEdges( target: KotlinAndroidTarget, diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/SyncKotlinAndAndroidSourceSetsTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/SyncKotlinAndAndroidSourceSetsTest.kt index 3427d40dd34..800c135e71c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/SyncKotlinAndAndroidSourceSetsTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/SyncKotlinAndAndroidSourceSetsTest.kt @@ -107,7 +107,7 @@ class SyncKotlinAndAndroidSourceSetsTest { fun assertSourceSetsExist(androidName: String, kotlinName: String) { val androidSourceSet = assertNotNull(android.sourceSets.findByName(androidName), "Expected Android source set '$androidName'") val kotlinSourceSet = assertNotNull(kotlin.sourceSets.findByName(kotlinName), "Expected Kotlin source set '$kotlinName'") - assertSame(kotlinSourceSet, androidSourceSet.kotlinSourceSet) + assertSame(kotlinSourceSet.kotlin, androidSourceSet.kotlinSourceSet) } assertSourceSetsExist("freeBetaDebug", "androidFreeBetaDebug") @@ -182,13 +182,13 @@ class SyncKotlinAndAndroidSourceSetsTest { kotlin.android() val main = android.sourceSets.getByName("main") - assertSame(kotlin.sourceSets.getByName("androidMain"), main.kotlinSourceSet) + assertSame(kotlin.sourceSets.getByName("androidMain").kotlin, main.kotlinSourceSet) val test = android.sourceSets.getByName("test") - assertSame(kotlin.sourceSets.getByName("androidTest"), test.kotlinSourceSet) + assertSame(kotlin.sourceSets.getByName("androidTest").kotlin, test.kotlinSourceSet) val androidTest = android.sourceSets.getByName("androidTest") - assertSame(kotlin.sourceSets.getByName("androidAndroidTest"), androidTest.kotlinSourceSet) + assertSame(kotlin.sourceSets.getByName("androidAndroidTest").kotlin, androidTest.kotlinSourceSet) } } 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 26904f4e745..4dcb057dc88 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 @@ -9,6 +9,7 @@ import com.android.build.gradle.BaseExtension import org.gradle.api.Named import org.gradle.api.NamedDomainObjectContainer 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.JavaSourceSetsAccessor @@ -120,9 +121,9 @@ open class KotlinPlatformAndroidPlugin : KotlinPlatformImplementationPluginBase( override fun addCommonSourceSetToPlatformSourceSet(commonSourceSet: Named, platformProject: Project) { val androidExtension = platformProject.extensions.getByName("android") as BaseExtension val androidSourceSet = androidExtension.sourceSets.findByName(commonSourceSet.name) ?: return - val kotlinSourceSet = androidSourceSet.getConvention(KOTLIN_DSL_NAME) as? KotlinSourceSet + val kotlinSourceSet = androidSourceSet.getExtension(KOTLIN_DSL_NAME) ?: return - kotlinSourceSet.kotlin.source(getKotlinSourceDirectorySetSafe(commonSourceSet)!!) + kotlinSourceSet.source(getKotlinSourceDirectorySetSafe(commonSourceSet)!!) } } 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 925a2298a44..75e10cff437 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 @@ -9,6 +9,7 @@ import com.android.build.gradle.BaseExtension import org.gradle.api.Named import org.gradle.api.NamedDomainObjectContainer 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 javax.inject.Inject @@ -123,9 +124,9 @@ open class KotlinPlatformAndroidPlugin : KotlinPlatformImplementationPluginBase( override fun addCommonSourceSetToPlatformSourceSet(commonSourceSet: Named, platformProject: Project) { val androidExtension = platformProject.extensions.getByName("android") as BaseExtension val androidSourceSet = androidExtension.sourceSets.findByName(commonSourceSet.name) ?: return - val kotlinSourceSet = androidSourceSet.getConvention(KOTLIN_DSL_NAME) as? KotlinSourceSet + val kotlinSourceSet = androidSourceSet.getExtension(KOTLIN_DSL_NAME) ?: return - kotlinSourceSet.kotlin.source(getKotlinSourceDirectorySetSafe(commonSourceSet)!!) + kotlinSourceSet.source(getKotlinSourceDirectorySetSafe(commonSourceSet)!!) } } 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 65f01ba0748..19f267570ad 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 @@ -9,6 +9,7 @@ import com.android.build.gradle.BaseExtension import org.gradle.api.Named import org.gradle.api.NamedDomainObjectContainer 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.JavaSourceSetsAccessor @@ -127,9 +128,9 @@ open class KotlinPlatformAndroidPlugin : KotlinPlatformImplementationPluginBase( override fun addCommonSourceSetToPlatformSourceSet(commonSourceSet: Named, platformProject: Project) { val androidExtension = platformProject.extensions.getByName("android") as BaseExtension val androidSourceSet = androidExtension.sourceSets.findByName(commonSourceSet.name) ?: return - val kotlinSourceSet = androidSourceSet.getConvention(KOTLIN_DSL_NAME) as? KotlinSourceSet + val kotlinSourceSet = androidSourceSet.getExtension(KOTLIN_DSL_NAME) ?: return - kotlinSourceSet.kotlin.source(getKotlinSourceDirectorySetSafe(commonSourceSet)!!) + kotlinSourceSet.source(getKotlinSourceDirectorySetSafe(commonSourceSet)!!) } }