diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtension.kt index bfb0cbdcacc..01013ad689f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtension.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtension.kt @@ -21,7 +21,8 @@ abstract class KotlinMultiplatformExtension(project: Project) : KotlinTargetContainerWithJsPresetFunctions, KotlinTargetContainerWithWasmPresetFunctions, KotlinTargetContainerWithNativeShortcuts, - KotlinHierarchyDsl { + KotlinHierarchyDsl, + KotlinMultiplatformSourceSetConventions by KotlinMultiplatformSourceSetConventionsImpl { override val presets: NamedDomainObjectCollection> = project.container(KotlinTargetPreset::class.java) final override val targets: NamedDomainObjectCollection = project.container(KotlinTarget::class.java) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformSourceSetConventions.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformSourceSetConventions.kt new file mode 100644 index 00000000000..fba2d35a776 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformSourceSetConventions.kt @@ -0,0 +1,153 @@ +/* + * 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.dsl + +import org.gradle.api.NamedDomainObjectContainer +import org.gradle.api.NamedDomainObjectProvider +import org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention.isRegisteredByKotlinSourceSetConventionAt +import org.jetbrains.kotlin.gradle.plugin.* +import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinGradleProjectChecker +import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinGradleProjectCheckerContext +import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics.AndroidMainSourceSetConventionUsedWithoutAndroidTarget +import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics.PlatformSourceSetConventionUsedWithCustomTargetName +import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics.PlatformSourceSetConventionUsedWithoutCorrespondingTarget +import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnosticsCollector +import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnostic +import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl +import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget + +interface KotlinMultiplatformSourceSetConventions { + val NamedDomainObjectContainer.commonMain: NamedDomainObjectProvider + val NamedDomainObjectContainer.commonTest: NamedDomainObjectProvider + val NamedDomainObjectContainer.nativeMain: NamedDomainObjectProvider + val NamedDomainObjectContainer.nativeTest: NamedDomainObjectProvider + val NamedDomainObjectContainer.appleMain: NamedDomainObjectProvider + val NamedDomainObjectContainer.appleTest: NamedDomainObjectProvider + val NamedDomainObjectContainer.iosMain: NamedDomainObjectProvider + val NamedDomainObjectContainer.iosTest: NamedDomainObjectProvider + val NamedDomainObjectContainer.tvosMain: NamedDomainObjectProvider + val NamedDomainObjectContainer.tvosTest: NamedDomainObjectProvider + val NamedDomainObjectContainer.watchosMain: NamedDomainObjectProvider + val NamedDomainObjectContainer.watchosTest: NamedDomainObjectProvider + val NamedDomainObjectContainer.macosMain: NamedDomainObjectProvider + val NamedDomainObjectContainer.macosTest: NamedDomainObjectProvider + val NamedDomainObjectContainer.linuxMain: NamedDomainObjectProvider + val NamedDomainObjectContainer.linuxTest: NamedDomainObjectProvider + val NamedDomainObjectContainer.mingwMain: NamedDomainObjectProvider + val NamedDomainObjectContainer.mingwTest: NamedDomainObjectProvider + val NamedDomainObjectContainer.androidNativeMain: NamedDomainObjectProvider + val NamedDomainObjectContainer.androidNativeTest: NamedDomainObjectProvider + val NamedDomainObjectContainer.jvmMain: NamedDomainObjectProvider + val NamedDomainObjectContainer.jvmTest: NamedDomainObjectProvider + val NamedDomainObjectContainer.jsMain: NamedDomainObjectProvider + val NamedDomainObjectContainer.jsTest: NamedDomainObjectProvider + val NamedDomainObjectContainer.androidMain: NamedDomainObjectProvider + + operator fun NamedDomainObjectProvider.invoke( + configure: KotlinSourceSet.() -> Unit, + ) = configure(configure) + + fun NamedDomainObjectProvider.dependencies( + handler: KotlinDependencyHandler.() -> Unit, + ) = configure { sourceSet -> + sourceSet.dependencies(handler) + } + + fun NamedDomainObjectProvider.languageSettings( + configure: LanguageSettingsBuilder.() -> Unit, + ) = configure { sourceSet -> + sourceSet.languageSettings(configure) + } +} + +/* Implementation */ + +internal object KotlinMultiplatformSourceSetConventionsImpl : KotlinMultiplatformSourceSetConventions { + override val NamedDomainObjectContainer.commonMain by KotlinSourceSetConvention + override val NamedDomainObjectContainer.commonTest by KotlinSourceSetConvention + override val NamedDomainObjectContainer.nativeMain by KotlinSourceSetConvention + override val NamedDomainObjectContainer.nativeTest by KotlinSourceSetConvention + override val NamedDomainObjectContainer.appleMain by KotlinSourceSetConvention + override val NamedDomainObjectContainer.appleTest by KotlinSourceSetConvention + override val NamedDomainObjectContainer.iosMain by KotlinSourceSetConvention + override val NamedDomainObjectContainer.iosTest by KotlinSourceSetConvention + override val NamedDomainObjectContainer.tvosMain by KotlinSourceSetConvention + override val NamedDomainObjectContainer.tvosTest by KotlinSourceSetConvention + override val NamedDomainObjectContainer.watchosMain by KotlinSourceSetConvention + override val NamedDomainObjectContainer.watchosTest by KotlinSourceSetConvention + override val NamedDomainObjectContainer.macosMain by KotlinSourceSetConvention + override val NamedDomainObjectContainer.macosTest by KotlinSourceSetConvention + override val NamedDomainObjectContainer.linuxMain by KotlinSourceSetConvention + override val NamedDomainObjectContainer.linuxTest by KotlinSourceSetConvention + override val NamedDomainObjectContainer.mingwMain by KotlinSourceSetConvention + override val NamedDomainObjectContainer.mingwTest by KotlinSourceSetConvention + override val NamedDomainObjectContainer.androidNativeMain by KotlinSourceSetConvention + override val NamedDomainObjectContainer.androidNativeTest by KotlinSourceSetConvention + override val NamedDomainObjectContainer.jvmMain by KotlinSourceSetConvention + override val NamedDomainObjectContainer.jvmTest by KotlinSourceSetConvention + override val NamedDomainObjectContainer.jsMain by KotlinSourceSetConvention + override val NamedDomainObjectContainer.jsTest by KotlinSourceSetConvention + override val NamedDomainObjectContainer.androidMain by KotlinSourceSetConvention +} + +/* Checkers */ + +internal object PlatformSourceSetConventionsChecker : KotlinGradleProjectChecker { + data class CheckedPlatformInfo( + val expectedTargetName: String, + val expectedTargetType: Class, + ) + + override suspend fun KotlinGradleProjectCheckerContext.runChecks(collector: KotlinToolingDiagnosticsCollector) { + listOf( + CheckedPlatformInfo("js", KotlinJsTargetDsl::class.java), + CheckedPlatformInfo("jvm", KotlinJvmTarget::class.java) + ).forEach { checkedPlatformInfo -> runChecks(checkedPlatformInfo) } + } + + private suspend fun KotlinGradleProjectCheckerContext.runChecks(platform: CheckedPlatformInfo) { + val kotlin = project.multiplatformExtensionOrNull ?: return + val sourceSets = kotlin.awaitSourceSets() + + /* Find jvmMain and jvmTest source sets that have been registered by the convention */ + val platformSourceSets = listOfNotNull( + sourceSets.findByName("${platform.expectedTargetName}Main"), + sourceSets.findByName("${platform.expectedTargetName}Test") + ) + .filter { it.isRegisteredByKotlinSourceSetConventionAt != null } + .ifEmpty { return } + + /* Check if a custom target name was used */ + val customNamedTarget = kotlin.targets.withType(platform.expectedTargetType) + .firstOrNull { target -> target.name != platform.expectedTargetName } + + if (customNamedTarget != null) { + platformSourceSets.forEach { sourceSet -> + project.reportDiagnostic( + PlatformSourceSetConventionUsedWithCustomTargetName(sourceSet, customNamedTarget, platform.expectedTargetName) + ) + } + } else if (kotlin.targets.findByName(platform.expectedTargetName) == null) { + platformSourceSets.forEach { sourceSet -> + project.reportDiagnostic( + PlatformSourceSetConventionUsedWithoutCorrespondingTarget(sourceSet, platform.expectedTargetName) + ) + } + } + } +} + +internal object AndroidMainSourceSetConventionsChecker : KotlinGradleProjectChecker { + override suspend fun KotlinGradleProjectCheckerContext.runChecks(collector: KotlinToolingDiagnosticsCollector) { + val kotlin = project.multiplatformExtensionOrNull ?: return + val androidMainSourceSet = kotlin.awaitSourceSets().findByName("androidMain") ?: return + if (androidMainSourceSet.isRegisteredByKotlinSourceSetConventionAt == null) return + val androidTarget = kotlin.awaitTargets().findByName("android") + if (androidTarget == null) { + project.reportDiagnostic(AndroidMainSourceSetConventionUsedWithoutAndroidTarget(androidMainSourceSet)) + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinSourceSetConvention.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinSourceSetConvention.kt new file mode 100644 index 00000000000..72962c8e3bb --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinSourceSetConvention.kt @@ -0,0 +1,63 @@ +/* + * 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.dsl + +import org.gradle.api.NamedDomainObjectContainer +import org.gradle.api.NamedDomainObjectProvider +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi +import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet +import org.jetbrains.kotlin.tooling.core.extrasReadWriteProperty +import kotlin.properties.ReadOnlyProperty +import kotlin.reflect.KProperty + +/** + * Can be used to implement static conventions to access certain Source Sets: + * Example: commonMain and commonTest conventions are implemented as: + * + * ```kotlin + * val NamedDomainObjectContainer.commonMain by KotlinSourceSetConvention + * + * val NamedDomainObjectContainer.commonTest by KotlinSourceSetConvention + * ``` + * + * And then can be accessed in buildscripts as + * ```kotlin + * kotlin { + * sourceSets.commonMain.dependencies { + * // ... + * } + * + * sourceSets.commonTest.dependencies { + * // ... + * } + * } + * ``` + */ +@ExperimentalKotlinGradlePluginApi +object KotlinSourceSetConvention : + ReadOnlyProperty, NamedDomainObjectProvider> { + override fun getValue( + thisRef: NamedDomainObjectContainer, property: KProperty<*>, + ): NamedDomainObjectProvider { + val name = property.name + return if (name in thisRef.names) thisRef.named(name) else thisRef.register(name) { sourceSet -> + sourceSet.isRegisteredByKotlinSourceSetConventionAt = Thread.currentThread().stackTrace + } + } + + /** + * @return the stacktrace when the user was using a [KotlinSourceSetConvention] that indeed created/registered a new SourceSet. + * This will be null if SourceSet already existed and was referenced using the convention, or of no convention was used at all. + */ + @Suppress("UnusedReceiverParameter") // Diagnostic is wrong + internal var KotlinSourceSet.isRegisteredByKotlinSourceSetConventionAt: Array? + by extrasReadWriteProperty("isRegisteredByKotlinSourceSetConvention") + private set +} + + + + diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinGradleProjectChecker.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinGradleProjectChecker.kt index 7d81be013ea..9ffef0ea590 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinGradleProjectChecker.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinGradleProjectChecker.kt @@ -7,6 +7,8 @@ package org.jetbrains.kotlin.gradle.plugin.diagnostics import org.gradle.api.Plugin import org.gradle.api.Project +import org.jetbrains.kotlin.gradle.dsl.AndroidMainSourceSetConventionsChecker +import org.jetbrains.kotlin.gradle.dsl.PlatformSourceSetConventionsChecker import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider @@ -108,6 +110,8 @@ internal interface KotlinGradleProjectChecker { PreHmppDependenciesUsageChecker, ExperimentalK2UsageChecker, KotlinSourceSetTreeDependsOnMismatchChecker, + PlatformSourceSetConventionsChecker, + AndroidMainSourceSetConventionsChecker, ) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnostics.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnostics.kt index 25cde869311..be0feae3cf0 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnostics.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnostics.kt @@ -6,6 +6,9 @@ package org.jetbrains.kotlin.gradle.plugin.diagnostics import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi +import org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention.isRegisteredByKotlinSourceSetConventionAt +import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet +import org.jetbrains.kotlin.gradle.plugin.KotlinTarget import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_NATIVE_IGNORE_DISABLED_TARGETS import org.jetbrains.kotlin.gradle.plugin.diagnostics.ToolingDiagnostic.Severity.* @@ -287,7 +290,7 @@ object KotlinToolingDiagnostics { targetCompatibility: String, kotlinTaskName: String, jvmTarget: String, - severity: ToolingDiagnostic.Severity + severity: ToolingDiagnostic.Severity, ) = build( """ Inconsistent JVM-target compatibility detected for tasks '$javaTaskName' ($targetCompatibility) and '$kotlinTaskName' ($jvmTarget). @@ -364,6 +367,72 @@ object KotlinToolingDiagnostics { """.trimIndent() ) } + + object PlatformSourceSetConventionUsedWithCustomTargetName : ToolingDiagnosticFactory(WARNING) { + operator fun invoke(sourceSet: KotlinSourceSet, target: KotlinTarget, expectedTargetName: String) = build( + """ + |Accessed '$sourceSet', but $expectedTargetName target used a custom name '${target.name}' (expected '$expectedTargetName'): + | + |Replace: + | kotlin { + | $expectedTargetName("${target.name}") /* <- custom name used */ + | } + | + |With: + | kotlin { + | $expectedTargetName() + | } + | + |Stacktrace: + ${sourceSet.isRegisteredByKotlinSourceSetConventionAt?.joinToString(System.lineSeparator()) { "| $it" }} + """.trimMargin() + ) + } + + object PlatformSourceSetConventionUsedWithoutCorrespondingTarget : ToolingDiagnosticFactory(WARNING) { + operator fun invoke(sourceSet: KotlinSourceSet, expectedTargetName: String) = build( + """ + |Accessed '$sourceSet' without the registering the $expectedTargetName target: + | kotlin { + | $expectedTargetName() /* <- register the '$expectedTargetName' target */ + | + | sourceSets.${sourceSet.name}.dependencies { + | + | } + | } + | + |Stacktrace: + ${sourceSet.isRegisteredByKotlinSourceSetConventionAt?.joinToString(System.lineSeparator()) { "| $it" }} + """.trimMargin() + ) + } + + object AndroidMainSourceSetConventionUsedWithoutAndroidTarget : ToolingDiagnosticFactory(ERROR) { + operator fun invoke(sourceSet: KotlinSourceSet) = build( + """ + |Accessed '$sourceSet' without registering the Android target + |Please apply a given Android Gradle plugin (e.g. com.android.library) and register an Android target + | + |Example using the 'com.android.library' plugin: + | + | plugins { + | id("com.android.library") + | } + | + | android { + | namespace = "org.sample.library" + | compileSdk = 33 + | } + | + | kotlin { + | androidTarget() /* <- register the androidTarget */ + | } + | + """.trimMargin() + ) + } + + } private fun String.indentLines(nSpaces: Int = 4, skipFirstLine: Boolean = true): String { diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/IdeJvmAndAndroidDependencyResolutionTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/IdeJvmAndAndroidDependencyResolutionTest.kt index fa6f4c199d9..b245a9766b1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/IdeJvmAndAndroidDependencyResolutionTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/IdeJvmAndAndroidDependencyResolutionTest.kt @@ -9,6 +9,9 @@ package org.jetbrains.kotlin.gradle.dependencyResolutionTests.tcs import org.gradle.api.Project import org.jetbrains.kotlin.gradle.dependencyResolutionTests.mavenCentralCacheRedirector +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformSourceSetConventionsImpl.commonMain +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformSourceSetConventionsImpl.commonTest +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformSourceSetConventionsImpl.dependencies import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinResolvedBinaryDependency import org.jetbrains.kotlin.gradle.idea.testFixtures.tcs.* @@ -118,11 +121,11 @@ class IdeJvmAndAndroidDependencyResolutionTest { val a = buildProject({ withParent(root).withName("a") }) { configureAndroidAndMultiplatform() } val b = buildProject({ withParent(root).withName("b") }) { configureAndroidAndMultiplatform() } - b.multiplatformExtension.commonMain.dependencies { + b.multiplatformExtension.sourceSets.commonMain.dependencies { api(project(":a")) } - a.multiplatformExtension.commonTest.dependencies { + a.multiplatformExtension.sourceSets.commonTest.dependencies { api(project(":b")) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/KT59446TransformationOnTransitiveJavaDependencyTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/KT59446TransformationOnTransitiveJavaDependencyTest.kt index a7ba2b269d5..39acc430fbb 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/KT59446TransformationOnTransitiveJavaDependencyTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/regressionTests/KT59446TransformationOnTransitiveJavaDependencyTest.kt @@ -7,12 +7,13 @@ package org.jetbrains.kotlin.gradle.regressionTests +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformSourceSetConventionsImpl.commonMain +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformSourceSetConventionsImpl.dependencies import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension import org.jetbrains.kotlin.gradle.plugin.ide.dependencyResolvers.resolveMetadata import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution import org.jetbrains.kotlin.gradle.util.buildProject import org.jetbrains.kotlin.gradle.util.buildProjectWithMPP -import org.jetbrains.kotlin.gradle.util.commonMain import kotlin.test.Test class KT59446TransformationOnTransitiveJavaDependencyTest { @@ -31,11 +32,11 @@ class KT59446TransformationOnTransitiveJavaDependencyTest { projectA.multiplatformExtension.jvm() projectB.multiplatformExtension.jvm() - projectB.multiplatformExtension.commonMain.dependencies { + projectB.multiplatformExtension.sourceSets.commonMain.dependencies { api(project(":java")) } - projectA.multiplatformExtension.commonMain.dependencies { + projectA.multiplatformExtension.sourceSets.commonMain.dependencies { api(project(":b")) } @@ -48,6 +49,6 @@ class KT59446TransformationOnTransitiveJavaDependencyTest { at org.jetbrains.kotlin.gradle.plugin.mpp.GranularMetadataTransformation.toModuleDependencyIdentifier(GranularMetadataTransformation.kt:303) at org.jetbrains.kotlin.gradle.plugin.mpp.GranularMetadataTransformation.processDependency(GranularMetadataTransformation.kt:260) */ - projectA.multiplatformExtension.commonMain.resolveMetadata() + projectA.multiplatformExtension.sourceSets.commonMain.get().resolveMetadata() } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/diagnosticsTests/MppDiagnosticsFunctionalTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/diagnosticsTests/MppDiagnosticsFunctionalTest.kt index e1455a56306..dbe2cee6bb2 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/diagnosticsTests/MppDiagnosticsFunctionalTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/diagnosticsTests/MppDiagnosticsFunctionalTest.kt @@ -8,7 +8,6 @@ package org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests import org.gradle.api.attributes.Attribute import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmWithJavaTargetPreset import org.jetbrains.kotlin.gradle.util.* -import org.junit.Ignore import org.junit.Test class MppDiagnosticsFunctionalTest { @@ -54,12 +53,12 @@ class MppDiagnosticsFunctionalTest { // Check that dependsOn doesn't make source set "used" create("unused2").dependsOn(unused1) // Check that depending on used source sets doesn't make source set "used" - create("unusedWithDependsOnUsed").dependsOn(commonMain) + create("unusedWithDependsOnUsed").dependsOn(commonMain.get()) // Check that custom intermediate source set isn't reported as unused val intermediate = create("intermediate") - jvmMain.dependsOn(intermediate) - intermediate.dependsOn(commonMain) + jvmMain.get().dependsOn(intermediate) + intermediate.dependsOn(commonMain.get()) } } } @@ -90,8 +89,8 @@ class MppDiagnosticsFunctionalTest { sourceSets.apply { val intermediateBetweenAndroid = create("intermediate") - androidMain.dependsOn(intermediateBetweenAndroid) - intermediateBetweenAndroid.dependsOn(commonMain) + androidMain.get().dependsOn(intermediateBetweenAndroid) + intermediateBetweenAndroid.dependsOn(commonMain.get()) } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/diagnosticsTests/MppSourceSetConventionsDiagnosticTests.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/diagnosticsTests/MppSourceSetConventionsDiagnosticTests.kt new file mode 100644 index 00000000000..d21417f67c1 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/diagnosticsTests/MppSourceSetConventionsDiagnosticTests.kt @@ -0,0 +1,89 @@ +/* + * 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("FunctionName") + +package org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests + +import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension +import org.jetbrains.kotlin.gradle.plugin.configurationResult +import org.jetbrains.kotlin.gradle.util.buildProjectWithMPP +import org.jetbrains.kotlin.gradle.util.checkDiagnostics +import org.jetbrains.kotlin.gradle.util.runLifecycleAwareTest +import kotlin.test.Test + +class MppSourceSetConventionsDiagnosticTests { + + @Test + fun `test - jvmMain and jvmTest without jvm target`() = buildProjectWithMPP().runLifecycleAwareTest { + multiplatformExtension.apply { + linuxX64() + sourceSets.jvmMain + sourceSets.jvmTest + + configurationResult.await() + checkDiagnostics("PlatformSourceSetConventionUsedWithoutCorrespondingTarget-jvmMain-jvmTest") + } + } + + @Test + fun `test - jvmMain and jvmTest with custom named jvm target`() = buildProjectWithMPP().runLifecycleAwareTest { + multiplatformExtension.apply { + jvm("desktop") + sourceSets.jvmMain + sourceSets.jvmTest + + configurationResult.await() + checkDiagnostics("PlatformSourceSetConventionUsedWithCustomTargetName-jvmMain-jvmTest") + } + } + + @Test + fun `test - jsMain and jsTest without js target`() = buildProjectWithMPP().runLifecycleAwareTest { + multiplatformExtension.apply { + linuxX64() + sourceSets.jsMain + sourceSets.jsTest + + configurationResult.await() + checkDiagnostics("PlatformSourceSetConventionUsedWithoutCorrespondingTarget-jsMain-jsTest") + } + } + + @Test + fun `test - jsMain and jsTest with custom named js target`() = buildProjectWithMPP().runLifecycleAwareTest { + multiplatformExtension.apply { + js("custom") { nodejs() } + sourceSets.jsMain + sourceSets.jsTest + + configurationResult.await() + checkDiagnostics("PlatformSourceSetConventionUsedWithCustomTargetName-jsMain-jsTest") + } + } + + @Test + fun `test - jvmMain and jvmTest without jvm target - source sets created manually`() = buildProjectWithMPP().runLifecycleAwareTest { + multiplatformExtension.apply { + linuxX64() + sourceSets.create("jvmMain") + sourceSets.create("jvmTest") + + configurationResult.await() + checkDiagnostics("PlatformSourceSetConventionUsedWithoutCorrespondingTarget-manually-created-jvmMain-jvmTest") + } + } + + @Test + fun `test - androidMain - without androidTarget`() = buildProjectWithMPP().runLifecycleAwareTest { + multiplatformExtension.apply { + linuxX64() + sourceSets.androidMain + + configurationResult.await() + checkDiagnostics("AndroidMainSourceSetConventionUsedWithoutAndroidTarget") + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/util/mppProjectConfigurationUtils.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/util/mppProjectConfigurationUtils.kt deleted file mode 100644 index 775594f67d9..00000000000 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/util/mppProjectConfigurationUtils.kt +++ /dev/null @@ -1,35 +0,0 @@ -/* - * 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.util - -import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension -import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet - -val KotlinMultiplatformExtension.commonMain: KotlinSourceSet - get() = sourceSets.getByName("commonMain") - -val KotlinMultiplatformExtension.commonTest: KotlinSourceSet - get() = sourceSets.getByName("commonTest") - -val KotlinMultiplatformExtension.jvmMain: KotlinSourceSet - get() = sourceSets.getByName("jvmMain") - -val KotlinMultiplatformExtension.jvmTest: KotlinSourceSet - get() = sourceSets.getByName("jvmTest") - -val KotlinMultiplatformExtension.androidMain: KotlinSourceSet - get() = sourceSets.getByName("androidMain") - -val KotlinMultiplatformExtension.androidTest: KotlinSourceSet - get() = sourceSets.getByName("androidTest") - -val KotlinMultiplatformExtension.iosMain: KotlinSourceSet - get() = sourceSets.getByName("iosMain") - -val KotlinMultiplatformExtension.iosTest: KotlinSourceSet - get() = sourceSets.getByName("iosTest") - -operator fun KotlinSourceSet.invoke(config: KotlinSourceSet.() -> Unit) = config() diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/AndroidMainSourceSetConventionUsedWithoutAndroidTarget.txt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/AndroidMainSourceSetConventionUsedWithoutAndroidTarget.txt new file mode 100644 index 00000000000..72461f623ba --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/AndroidMainSourceSetConventionUsedWithoutAndroidTarget.txt @@ -0,0 +1,23 @@ +[AndroidMainSourceSetConventionUsedWithoutAndroidTarget | ERROR] Accessed 'source set androidMain' without registering the Android target +Please apply a given Android Gradle plugin (e.g. com.android.library) and register an Android target + +Example using the 'com.android.library' plugin: + + plugins { + id("com.android.library") + } + + android { + namespace = "org.sample.library" + compileSdk = 33 + } + + kotlin { + androidTarget() /* <- register the androidTarget */ + } + +---- +[UnusedSourceSetsWarning | WARNING] The Kotlin source set androidMain was configured but not added to any Kotlin compilation. + +You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'. +See https://kotl.in/connecting-source-sets diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/PlatformSourceSetConventionUsedWithCustomTargetName-jsMain-jsTest.txt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/PlatformSourceSetConventionUsedWithCustomTargetName-jsMain-jsTest.txt new file mode 100644 index 00000000000..8c4056d17d7 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/PlatformSourceSetConventionUsedWithCustomTargetName-jsMain-jsTest.txt @@ -0,0 +1,187 @@ +[PlatformSourceSetConventionUsedWithCustomTargetName | WARNING] Accessed 'source set jsMain', but js target used a custom name 'custom' (expected 'js'): + +Replace: + kotlin { + js("custom") /* <- custom name used */ + } + +With: + kotlin { + js() + } + +Stacktrace: + java.base/java.lang.Thread.getStackTrace(Thread.java:1602) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention$getValue$1.execute(KotlinSourceSetConvention.kt:50) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention$getValue$1.execute(KotlinSourceSetConvention.kt:49) + org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:45) + org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:45) + org.gradle.internal.ImmutableActionSet$SetWithFewActions.execute(ImmutableActionSet.java:285) + org.gradle.api.internal.DefaultDomainObjectCollection.doAdd(DefaultDomainObjectCollection.java:262) + org.gradle.api.internal.DefaultNamedDomainObjectCollection.doAdd(DefaultNamedDomainObjectCollection.java:113) + org.gradle.api.internal.DefaultDomainObjectCollection.add(DefaultDomainObjectCollection.java:256) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.tryCreate(DefaultNamedDomainObjectCollection.java:944) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.calculateOwnValue(DefaultNamedDomainObjectCollection.java:929) + org.gradle.api.internal.provider.AbstractMinimalProvider.calculateOwnPresentValue(AbstractMinimalProvider.java:72) + org.gradle.api.internal.provider.AbstractMinimalProvider.get(AbstractMinimalProvider.java:92) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.get(DefaultNamedDomainObjectCollection.java:915) + org.gradle.api.internal.DefaultDomainObjectCollection.addLater(DefaultDomainObjectCollection.java:286) + org.gradle.api.internal.DefaultNamedDomainObjectCollection.addLater(DefaultNamedDomainObjectCollection.java:146) + org.gradle.api.internal.AbstractNamedDomainObjectContainer.createDomainObjectProvider(AbstractNamedDomainObjectContainer.java:122) + org.gradle.api.internal.AbstractNamedDomainObjectContainer.register(AbstractNamedDomainObjectContainer.java:114) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention.getValue(KotlinSourceSetConvention.kt:49) + org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformSourceSetConventionsImpl.getJsMain(KotlinMultiplatformSourceSetConventions.kt:92) + org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension.getJsMain(KotlinMultiplatformExtension.kt) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jsMain and jsTest with custom named js target$1.invokeSuspend(MppSourceSetConventionsDiagnosticTests.kt:59) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jsMain and jsTest with custom named js target$1.invoke(MppSourceSetConventionsDiagnosticTests.kt) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jsMain and jsTest with custom named js target$1.invoke(MppSourceSetConventionsDiagnosticTests.kt) + org.jetbrains.kotlin.gradle.util.LifecycleUtilsKt$runLifecycleAwareTest$1.invokeSuspend(lifecycleUtils.kt:15) + kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) + kotlin.coroutines.SafeContinuation.resumeWith(SafeContinuationJvm.kt:41) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl$launch$1.invoke(KotlinPluginLifecycleImpl.kt:159) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl$launch$1.invoke(KotlinPluginLifecycleImpl.kt:158) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.loopIfNecessary(KotlinPluginLifecycleImpl.kt:97) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.enqueue(KotlinPluginLifecycleImpl.kt:144) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.launch(KotlinPluginLifecycleImpl.kt:158) + org.jetbrains.kotlin.gradle.util.LifecycleUtilsKt.runLifecycleAwareTest(lifecycleUtils.kt:15) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests.test - jsMain and jsTest with custom named js target(MppSourceSetConventionsDiagnosticTests.kt:56) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + java.base/java.lang.reflect.Method.invoke(Method.java:566) + org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) + org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) + org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) + org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) + org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) + org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) + org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) + org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) + org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) + org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) + org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) + org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) + org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) + org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) + org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) + org.junit.runners.ParentRunner.run(ParentRunner.java:413) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:108) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:57) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:39) + org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62) + org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:52) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + java.base/java.lang.reflect.Method.invoke(Method.java:566) + org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) + org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) + org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) + org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94) + com.sun.proxy.$Proxy2.processTestClass(Unknown Source) + org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176) + org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129) + org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100) + org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60) + org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) + org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113) + org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65) + worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) + worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) +---- +[PlatformSourceSetConventionUsedWithCustomTargetName | WARNING] Accessed 'source set jsTest', but js target used a custom name 'custom' (expected 'js'): + +Replace: + kotlin { + js("custom") /* <- custom name used */ + } + +With: + kotlin { + js() + } + +Stacktrace: + java.base/java.lang.Thread.getStackTrace(Thread.java:1602) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention$getValue$1.execute(KotlinSourceSetConvention.kt:50) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention$getValue$1.execute(KotlinSourceSetConvention.kt:49) + org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:45) + org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:45) + org.gradle.internal.ImmutableActionSet$SetWithFewActions.execute(ImmutableActionSet.java:285) + org.gradle.api.internal.DefaultDomainObjectCollection.doAdd(DefaultDomainObjectCollection.java:262) + org.gradle.api.internal.DefaultNamedDomainObjectCollection.doAdd(DefaultNamedDomainObjectCollection.java:113) + org.gradle.api.internal.DefaultDomainObjectCollection.add(DefaultDomainObjectCollection.java:256) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.tryCreate(DefaultNamedDomainObjectCollection.java:944) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.calculateOwnValue(DefaultNamedDomainObjectCollection.java:929) + org.gradle.api.internal.provider.AbstractMinimalProvider.calculateOwnPresentValue(AbstractMinimalProvider.java:72) + org.gradle.api.internal.provider.AbstractMinimalProvider.get(AbstractMinimalProvider.java:92) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.get(DefaultNamedDomainObjectCollection.java:915) + org.gradle.api.internal.DefaultDomainObjectCollection.addLater(DefaultDomainObjectCollection.java:286) + org.gradle.api.internal.DefaultNamedDomainObjectCollection.addLater(DefaultNamedDomainObjectCollection.java:146) + org.gradle.api.internal.AbstractNamedDomainObjectContainer.createDomainObjectProvider(AbstractNamedDomainObjectContainer.java:122) + org.gradle.api.internal.AbstractNamedDomainObjectContainer.register(AbstractNamedDomainObjectContainer.java:114) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention.getValue(KotlinSourceSetConvention.kt:49) + org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformSourceSetConventionsImpl.getJsTest(KotlinMultiplatformSourceSetConventions.kt:93) + org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension.getJsTest(KotlinMultiplatformExtension.kt) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jsMain and jsTest with custom named js target$1.invokeSuspend(MppSourceSetConventionsDiagnosticTests.kt:60) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jsMain and jsTest with custom named js target$1.invoke(MppSourceSetConventionsDiagnosticTests.kt) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jsMain and jsTest with custom named js target$1.invoke(MppSourceSetConventionsDiagnosticTests.kt) + org.jetbrains.kotlin.gradle.util.LifecycleUtilsKt$runLifecycleAwareTest$1.invokeSuspend(lifecycleUtils.kt:15) + kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) + kotlin.coroutines.SafeContinuation.resumeWith(SafeContinuationJvm.kt:41) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl$launch$1.invoke(KotlinPluginLifecycleImpl.kt:159) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl$launch$1.invoke(KotlinPluginLifecycleImpl.kt:158) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.loopIfNecessary(KotlinPluginLifecycleImpl.kt:97) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.enqueue(KotlinPluginLifecycleImpl.kt:144) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.launch(KotlinPluginLifecycleImpl.kt:158) + org.jetbrains.kotlin.gradle.util.LifecycleUtilsKt.runLifecycleAwareTest(lifecycleUtils.kt:15) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests.test - jsMain and jsTest with custom named js target(MppSourceSetConventionsDiagnosticTests.kt:56) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + java.base/java.lang.reflect.Method.invoke(Method.java:566) + org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) + org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) + org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) + org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) + org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) + org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) + org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) + org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) + org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) + org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) + org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) + org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) + org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) + org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) + org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) + org.junit.runners.ParentRunner.run(ParentRunner.java:413) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:108) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:57) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:39) + org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62) + org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:52) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + java.base/java.lang.reflect.Method.invoke(Method.java:566) + org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) + org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) + org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) + org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94) + com.sun.proxy.$Proxy2.processTestClass(Unknown Source) + org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176) + org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129) + org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100) + org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60) + org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) + org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113) + org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65) + worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) + worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) +---- +[UnusedSourceSetsWarning | WARNING] The following Kotlin source sets were configured but not added to any Kotlin compilation: + * jsMain + * jsTest +You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'. +See https://kotl.in/connecting-source-sets diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/PlatformSourceSetConventionUsedWithCustomTargetName-jvmMain-jvmTest.txt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/PlatformSourceSetConventionUsedWithCustomTargetName-jvmMain-jvmTest.txt new file mode 100644 index 00000000000..54831a552d3 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/PlatformSourceSetConventionUsedWithCustomTargetName-jvmMain-jvmTest.txt @@ -0,0 +1,187 @@ +[PlatformSourceSetConventionUsedWithCustomTargetName | WARNING] Accessed 'source set jvmMain', but jvm target used a custom name 'desktop' (expected 'jvm'): + +Replace: + kotlin { + jvm("desktop") /* <- custom name used */ + } + +With: + kotlin { + jvm() + } + +Stacktrace: + java.base/java.lang.Thread.getStackTrace(Thread.java:1602) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention$getValue$1.execute(KotlinSourceSetConvention.kt:50) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention$getValue$1.execute(KotlinSourceSetConvention.kt:49) + org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:45) + org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:45) + org.gradle.internal.ImmutableActionSet$SetWithFewActions.execute(ImmutableActionSet.java:285) + org.gradle.api.internal.DefaultDomainObjectCollection.doAdd(DefaultDomainObjectCollection.java:262) + org.gradle.api.internal.DefaultNamedDomainObjectCollection.doAdd(DefaultNamedDomainObjectCollection.java:113) + org.gradle.api.internal.DefaultDomainObjectCollection.add(DefaultDomainObjectCollection.java:256) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.tryCreate(DefaultNamedDomainObjectCollection.java:944) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.calculateOwnValue(DefaultNamedDomainObjectCollection.java:929) + org.gradle.api.internal.provider.AbstractMinimalProvider.calculateOwnPresentValue(AbstractMinimalProvider.java:72) + org.gradle.api.internal.provider.AbstractMinimalProvider.get(AbstractMinimalProvider.java:92) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.get(DefaultNamedDomainObjectCollection.java:915) + org.gradle.api.internal.DefaultDomainObjectCollection.addLater(DefaultDomainObjectCollection.java:286) + org.gradle.api.internal.DefaultNamedDomainObjectCollection.addLater(DefaultNamedDomainObjectCollection.java:146) + org.gradle.api.internal.AbstractNamedDomainObjectContainer.createDomainObjectProvider(AbstractNamedDomainObjectContainer.java:122) + org.gradle.api.internal.AbstractNamedDomainObjectContainer.register(AbstractNamedDomainObjectContainer.java:114) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention.getValue(KotlinSourceSetConvention.kt:49) + org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformSourceSetConventionsImpl.getJvmMain(KotlinMultiplatformSourceSetConventions.kt:90) + org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension.getJvmMain(KotlinMultiplatformExtension.kt) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jvmMain and jvmTest with custom named jvm target$1.invokeSuspend(MppSourceSetConventionsDiagnosticTests.kt:35) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jvmMain and jvmTest with custom named jvm target$1.invoke(MppSourceSetConventionsDiagnosticTests.kt) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jvmMain and jvmTest with custom named jvm target$1.invoke(MppSourceSetConventionsDiagnosticTests.kt) + org.jetbrains.kotlin.gradle.util.LifecycleUtilsKt$runLifecycleAwareTest$1.invokeSuspend(lifecycleUtils.kt:15) + kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) + kotlin.coroutines.SafeContinuation.resumeWith(SafeContinuationJvm.kt:41) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl$launch$1.invoke(KotlinPluginLifecycleImpl.kt:159) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl$launch$1.invoke(KotlinPluginLifecycleImpl.kt:158) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.loopIfNecessary(KotlinPluginLifecycleImpl.kt:97) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.enqueue(KotlinPluginLifecycleImpl.kt:144) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.launch(KotlinPluginLifecycleImpl.kt:158) + org.jetbrains.kotlin.gradle.util.LifecycleUtilsKt.runLifecycleAwareTest(lifecycleUtils.kt:15) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests.test - jvmMain and jvmTest with custom named jvm target(MppSourceSetConventionsDiagnosticTests.kt:32) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + java.base/java.lang.reflect.Method.invoke(Method.java:566) + org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) + org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) + org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) + org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) + org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) + org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) + org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) + org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) + org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) + org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) + org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) + org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) + org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) + org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) + org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) + org.junit.runners.ParentRunner.run(ParentRunner.java:413) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:108) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:57) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:39) + org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62) + org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:52) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + java.base/java.lang.reflect.Method.invoke(Method.java:566) + org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) + org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) + org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) + org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94) + com.sun.proxy.$Proxy2.processTestClass(Unknown Source) + org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176) + org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129) + org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100) + org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60) + org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) + org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113) + org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65) + worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) + worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) +---- +[PlatformSourceSetConventionUsedWithCustomTargetName | WARNING] Accessed 'source set jvmTest', but jvm target used a custom name 'desktop' (expected 'jvm'): + +Replace: + kotlin { + jvm("desktop") /* <- custom name used */ + } + +With: + kotlin { + jvm() + } + +Stacktrace: + java.base/java.lang.Thread.getStackTrace(Thread.java:1602) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention$getValue$1.execute(KotlinSourceSetConvention.kt:50) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention$getValue$1.execute(KotlinSourceSetConvention.kt:49) + org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:45) + org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:45) + org.gradle.internal.ImmutableActionSet$SetWithFewActions.execute(ImmutableActionSet.java:285) + org.gradle.api.internal.DefaultDomainObjectCollection.doAdd(DefaultDomainObjectCollection.java:262) + org.gradle.api.internal.DefaultNamedDomainObjectCollection.doAdd(DefaultNamedDomainObjectCollection.java:113) + org.gradle.api.internal.DefaultDomainObjectCollection.add(DefaultDomainObjectCollection.java:256) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.tryCreate(DefaultNamedDomainObjectCollection.java:944) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.calculateOwnValue(DefaultNamedDomainObjectCollection.java:929) + org.gradle.api.internal.provider.AbstractMinimalProvider.calculateOwnPresentValue(AbstractMinimalProvider.java:72) + org.gradle.api.internal.provider.AbstractMinimalProvider.get(AbstractMinimalProvider.java:92) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.get(DefaultNamedDomainObjectCollection.java:915) + org.gradle.api.internal.DefaultDomainObjectCollection.addLater(DefaultDomainObjectCollection.java:286) + org.gradle.api.internal.DefaultNamedDomainObjectCollection.addLater(DefaultNamedDomainObjectCollection.java:146) + org.gradle.api.internal.AbstractNamedDomainObjectContainer.createDomainObjectProvider(AbstractNamedDomainObjectContainer.java:122) + org.gradle.api.internal.AbstractNamedDomainObjectContainer.register(AbstractNamedDomainObjectContainer.java:114) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention.getValue(KotlinSourceSetConvention.kt:49) + org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformSourceSetConventionsImpl.getJvmTest(KotlinMultiplatformSourceSetConventions.kt:91) + org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension.getJvmTest(KotlinMultiplatformExtension.kt) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jvmMain and jvmTest with custom named jvm target$1.invokeSuspend(MppSourceSetConventionsDiagnosticTests.kt:36) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jvmMain and jvmTest with custom named jvm target$1.invoke(MppSourceSetConventionsDiagnosticTests.kt) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jvmMain and jvmTest with custom named jvm target$1.invoke(MppSourceSetConventionsDiagnosticTests.kt) + org.jetbrains.kotlin.gradle.util.LifecycleUtilsKt$runLifecycleAwareTest$1.invokeSuspend(lifecycleUtils.kt:15) + kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) + kotlin.coroutines.SafeContinuation.resumeWith(SafeContinuationJvm.kt:41) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl$launch$1.invoke(KotlinPluginLifecycleImpl.kt:159) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl$launch$1.invoke(KotlinPluginLifecycleImpl.kt:158) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.loopIfNecessary(KotlinPluginLifecycleImpl.kt:97) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.enqueue(KotlinPluginLifecycleImpl.kt:144) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.launch(KotlinPluginLifecycleImpl.kt:158) + org.jetbrains.kotlin.gradle.util.LifecycleUtilsKt.runLifecycleAwareTest(lifecycleUtils.kt:15) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests.test - jvmMain and jvmTest with custom named jvm target(MppSourceSetConventionsDiagnosticTests.kt:32) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + java.base/java.lang.reflect.Method.invoke(Method.java:566) + org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) + org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) + org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) + org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) + org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) + org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) + org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) + org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) + org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) + org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) + org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) + org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) + org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) + org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) + org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) + org.junit.runners.ParentRunner.run(ParentRunner.java:413) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:108) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:57) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:39) + org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62) + org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:52) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + java.base/java.lang.reflect.Method.invoke(Method.java:566) + org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) + org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) + org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) + org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94) + com.sun.proxy.$Proxy2.processTestClass(Unknown Source) + org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176) + org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129) + org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100) + org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60) + org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) + org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113) + org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65) + worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) + worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) +---- +[UnusedSourceSetsWarning | WARNING] The following Kotlin source sets were configured but not added to any Kotlin compilation: + * jvmMain + * jvmTest +You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'. +See https://kotl.in/connecting-source-sets diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/PlatformSourceSetConventionUsedWithoutCorrespondingTarget-jsMain-jsTest.txt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/PlatformSourceSetConventionUsedWithoutCorrespondingTarget-jsMain-jsTest.txt new file mode 100644 index 00000000000..56125c4bf79 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/PlatformSourceSetConventionUsedWithoutCorrespondingTarget-jsMain-jsTest.txt @@ -0,0 +1,181 @@ +[PlatformSourceSetConventionUsedWithoutCorrespondingTarget | WARNING] Accessed 'source set jsMain' without the registering the js target: + kotlin { + js() /* <- register the 'js' target */ + + sourceSets.jsMain.dependencies { + + } + } + +Stacktrace: + java.base/java.lang.Thread.getStackTrace(Thread.java:1602) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention$getValue$1.execute(KotlinSourceSetConvention.kt:50) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention$getValue$1.execute(KotlinSourceSetConvention.kt:49) + org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:45) + org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:45) + org.gradle.internal.ImmutableActionSet$SetWithFewActions.execute(ImmutableActionSet.java:285) + org.gradle.api.internal.DefaultDomainObjectCollection.doAdd(DefaultDomainObjectCollection.java:262) + org.gradle.api.internal.DefaultNamedDomainObjectCollection.doAdd(DefaultNamedDomainObjectCollection.java:113) + org.gradle.api.internal.DefaultDomainObjectCollection.add(DefaultDomainObjectCollection.java:256) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.tryCreate(DefaultNamedDomainObjectCollection.java:944) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.calculateOwnValue(DefaultNamedDomainObjectCollection.java:929) + org.gradle.api.internal.provider.AbstractMinimalProvider.calculateOwnPresentValue(AbstractMinimalProvider.java:72) + org.gradle.api.internal.provider.AbstractMinimalProvider.get(AbstractMinimalProvider.java:92) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.get(DefaultNamedDomainObjectCollection.java:915) + org.gradle.api.internal.DefaultDomainObjectCollection.addLater(DefaultDomainObjectCollection.java:286) + org.gradle.api.internal.DefaultNamedDomainObjectCollection.addLater(DefaultNamedDomainObjectCollection.java:146) + org.gradle.api.internal.AbstractNamedDomainObjectContainer.createDomainObjectProvider(AbstractNamedDomainObjectContainer.java:122) + org.gradle.api.internal.AbstractNamedDomainObjectContainer.register(AbstractNamedDomainObjectContainer.java:114) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention.getValue(KotlinSourceSetConvention.kt:49) + org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformSourceSetConventionsImpl.getJsMain(KotlinMultiplatformSourceSetConventions.kt:92) + org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension.getJsMain(KotlinMultiplatformExtension.kt) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jsMain and jsTest without js target$1.invokeSuspend(MppSourceSetConventionsDiagnosticTests.kt:47) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jsMain and jsTest without js target$1.invoke(MppSourceSetConventionsDiagnosticTests.kt) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jsMain and jsTest without js target$1.invoke(MppSourceSetConventionsDiagnosticTests.kt) + org.jetbrains.kotlin.gradle.util.LifecycleUtilsKt$runLifecycleAwareTest$1.invokeSuspend(lifecycleUtils.kt:15) + kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) + kotlin.coroutines.SafeContinuation.resumeWith(SafeContinuationJvm.kt:41) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl$launch$1.invoke(KotlinPluginLifecycleImpl.kt:159) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl$launch$1.invoke(KotlinPluginLifecycleImpl.kt:158) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.loopIfNecessary(KotlinPluginLifecycleImpl.kt:97) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.enqueue(KotlinPluginLifecycleImpl.kt:144) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.launch(KotlinPluginLifecycleImpl.kt:158) + org.jetbrains.kotlin.gradle.util.LifecycleUtilsKt.runLifecycleAwareTest(lifecycleUtils.kt:15) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests.test - jsMain and jsTest without js target(MppSourceSetConventionsDiagnosticTests.kt:44) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + java.base/java.lang.reflect.Method.invoke(Method.java:566) + org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) + org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) + org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) + org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) + org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) + org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) + org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) + org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) + org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) + org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) + org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) + org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) + org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) + org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) + org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) + org.junit.runners.ParentRunner.run(ParentRunner.java:413) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:108) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:57) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:39) + org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62) + org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:52) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + java.base/java.lang.reflect.Method.invoke(Method.java:566) + org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) + org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) + org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) + org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94) + com.sun.proxy.$Proxy2.processTestClass(Unknown Source) + org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176) + org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129) + org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100) + org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60) + org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) + org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113) + org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65) + worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) + worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) +---- +[PlatformSourceSetConventionUsedWithoutCorrespondingTarget | WARNING] Accessed 'source set jsTest' without the registering the js target: + kotlin { + js() /* <- register the 'js' target */ + + sourceSets.jsTest.dependencies { + + } + } + +Stacktrace: + java.base/java.lang.Thread.getStackTrace(Thread.java:1602) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention$getValue$1.execute(KotlinSourceSetConvention.kt:50) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention$getValue$1.execute(KotlinSourceSetConvention.kt:49) + org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:45) + org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:45) + org.gradle.internal.ImmutableActionSet$SetWithFewActions.execute(ImmutableActionSet.java:285) + org.gradle.api.internal.DefaultDomainObjectCollection.doAdd(DefaultDomainObjectCollection.java:262) + org.gradle.api.internal.DefaultNamedDomainObjectCollection.doAdd(DefaultNamedDomainObjectCollection.java:113) + org.gradle.api.internal.DefaultDomainObjectCollection.add(DefaultDomainObjectCollection.java:256) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.tryCreate(DefaultNamedDomainObjectCollection.java:944) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.calculateOwnValue(DefaultNamedDomainObjectCollection.java:929) + org.gradle.api.internal.provider.AbstractMinimalProvider.calculateOwnPresentValue(AbstractMinimalProvider.java:72) + org.gradle.api.internal.provider.AbstractMinimalProvider.get(AbstractMinimalProvider.java:92) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.get(DefaultNamedDomainObjectCollection.java:915) + org.gradle.api.internal.DefaultDomainObjectCollection.addLater(DefaultDomainObjectCollection.java:286) + org.gradle.api.internal.DefaultNamedDomainObjectCollection.addLater(DefaultNamedDomainObjectCollection.java:146) + org.gradle.api.internal.AbstractNamedDomainObjectContainer.createDomainObjectProvider(AbstractNamedDomainObjectContainer.java:122) + org.gradle.api.internal.AbstractNamedDomainObjectContainer.register(AbstractNamedDomainObjectContainer.java:114) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention.getValue(KotlinSourceSetConvention.kt:49) + org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformSourceSetConventionsImpl.getJsTest(KotlinMultiplatformSourceSetConventions.kt:93) + org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension.getJsTest(KotlinMultiplatformExtension.kt) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jsMain and jsTest without js target$1.invokeSuspend(MppSourceSetConventionsDiagnosticTests.kt:48) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jsMain and jsTest without js target$1.invoke(MppSourceSetConventionsDiagnosticTests.kt) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jsMain and jsTest without js target$1.invoke(MppSourceSetConventionsDiagnosticTests.kt) + org.jetbrains.kotlin.gradle.util.LifecycleUtilsKt$runLifecycleAwareTest$1.invokeSuspend(lifecycleUtils.kt:15) + kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) + kotlin.coroutines.SafeContinuation.resumeWith(SafeContinuationJvm.kt:41) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl$launch$1.invoke(KotlinPluginLifecycleImpl.kt:159) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl$launch$1.invoke(KotlinPluginLifecycleImpl.kt:158) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.loopIfNecessary(KotlinPluginLifecycleImpl.kt:97) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.enqueue(KotlinPluginLifecycleImpl.kt:144) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.launch(KotlinPluginLifecycleImpl.kt:158) + org.jetbrains.kotlin.gradle.util.LifecycleUtilsKt.runLifecycleAwareTest(lifecycleUtils.kt:15) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests.test - jsMain and jsTest without js target(MppSourceSetConventionsDiagnosticTests.kt:44) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + java.base/java.lang.reflect.Method.invoke(Method.java:566) + org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) + org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) + org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) + org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) + org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) + org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) + org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) + org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) + org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) + org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) + org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) + org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) + org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) + org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) + org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) + org.junit.runners.ParentRunner.run(ParentRunner.java:413) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:108) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:57) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:39) + org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62) + org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:52) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + java.base/java.lang.reflect.Method.invoke(Method.java:566) + org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) + org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) + org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) + org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94) + com.sun.proxy.$Proxy2.processTestClass(Unknown Source) + org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176) + org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129) + org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100) + org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60) + org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) + org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113) + org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65) + worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) + worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) +---- +[UnusedSourceSetsWarning | WARNING] The following Kotlin source sets were configured but not added to any Kotlin compilation: + * jsMain + * jsTest +You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'. +See https://kotl.in/connecting-source-sets diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/PlatformSourceSetConventionUsedWithoutCorrespondingTarget-jvmMain-jvmTest.txt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/PlatformSourceSetConventionUsedWithoutCorrespondingTarget-jvmMain-jvmTest.txt new file mode 100644 index 00000000000..25a4f9bc84b --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/PlatformSourceSetConventionUsedWithoutCorrespondingTarget-jvmMain-jvmTest.txt @@ -0,0 +1,181 @@ +[PlatformSourceSetConventionUsedWithoutCorrespondingTarget | WARNING] Accessed 'source set jvmMain' without the registering the jvm target: + kotlin { + jvm() /* <- register the 'jvm' target */ + + sourceSets.jvmMain.dependencies { + + } + } + +Stacktrace: + java.base/java.lang.Thread.getStackTrace(Thread.java:1602) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention$getValue$1.execute(KotlinSourceSetConvention.kt:50) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention$getValue$1.execute(KotlinSourceSetConvention.kt:49) + org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:45) + org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:45) + org.gradle.internal.ImmutableActionSet$SetWithFewActions.execute(ImmutableActionSet.java:285) + org.gradle.api.internal.DefaultDomainObjectCollection.doAdd(DefaultDomainObjectCollection.java:262) + org.gradle.api.internal.DefaultNamedDomainObjectCollection.doAdd(DefaultNamedDomainObjectCollection.java:113) + org.gradle.api.internal.DefaultDomainObjectCollection.add(DefaultDomainObjectCollection.java:256) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.tryCreate(DefaultNamedDomainObjectCollection.java:944) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.calculateOwnValue(DefaultNamedDomainObjectCollection.java:929) + org.gradle.api.internal.provider.AbstractMinimalProvider.calculateOwnPresentValue(AbstractMinimalProvider.java:72) + org.gradle.api.internal.provider.AbstractMinimalProvider.get(AbstractMinimalProvider.java:92) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.get(DefaultNamedDomainObjectCollection.java:915) + org.gradle.api.internal.DefaultDomainObjectCollection.addLater(DefaultDomainObjectCollection.java:286) + org.gradle.api.internal.DefaultNamedDomainObjectCollection.addLater(DefaultNamedDomainObjectCollection.java:146) + org.gradle.api.internal.AbstractNamedDomainObjectContainer.createDomainObjectProvider(AbstractNamedDomainObjectContainer.java:122) + org.gradle.api.internal.AbstractNamedDomainObjectContainer.register(AbstractNamedDomainObjectContainer.java:114) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention.getValue(KotlinSourceSetConvention.kt:49) + org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformSourceSetConventionsImpl.getJvmMain(KotlinMultiplatformSourceSetConventions.kt:90) + org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension.getJvmMain(KotlinMultiplatformExtension.kt) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jvmMain and jvmTest without jvm target$1.invokeSuspend(MppSourceSetConventionsDiagnosticTests.kt:23) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jvmMain and jvmTest without jvm target$1.invoke(MppSourceSetConventionsDiagnosticTests.kt) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jvmMain and jvmTest without jvm target$1.invoke(MppSourceSetConventionsDiagnosticTests.kt) + org.jetbrains.kotlin.gradle.util.LifecycleUtilsKt$runLifecycleAwareTest$1.invokeSuspend(lifecycleUtils.kt:15) + kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) + kotlin.coroutines.SafeContinuation.resumeWith(SafeContinuationJvm.kt:41) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl$launch$1.invoke(KotlinPluginLifecycleImpl.kt:159) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl$launch$1.invoke(KotlinPluginLifecycleImpl.kt:158) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.loopIfNecessary(KotlinPluginLifecycleImpl.kt:97) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.enqueue(KotlinPluginLifecycleImpl.kt:144) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.launch(KotlinPluginLifecycleImpl.kt:158) + org.jetbrains.kotlin.gradle.util.LifecycleUtilsKt.runLifecycleAwareTest(lifecycleUtils.kt:15) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests.test - jvmMain and jvmTest without jvm target(MppSourceSetConventionsDiagnosticTests.kt:20) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + java.base/java.lang.reflect.Method.invoke(Method.java:566) + org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) + org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) + org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) + org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) + org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) + org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) + org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) + org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) + org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) + org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) + org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) + org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) + org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) + org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) + org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) + org.junit.runners.ParentRunner.run(ParentRunner.java:413) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:108) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:57) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:39) + org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62) + org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:52) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + java.base/java.lang.reflect.Method.invoke(Method.java:566) + org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) + org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) + org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) + org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94) + com.sun.proxy.$Proxy2.processTestClass(Unknown Source) + org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176) + org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129) + org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100) + org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60) + org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) + org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113) + org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65) + worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) + worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) +---- +[PlatformSourceSetConventionUsedWithoutCorrespondingTarget | WARNING] Accessed 'source set jvmTest' without the registering the jvm target: + kotlin { + jvm() /* <- register the 'jvm' target */ + + sourceSets.jvmTest.dependencies { + + } + } + +Stacktrace: + java.base/java.lang.Thread.getStackTrace(Thread.java:1602) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention$getValue$1.execute(KotlinSourceSetConvention.kt:50) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention$getValue$1.execute(KotlinSourceSetConvention.kt:49) + org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:45) + org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:45) + org.gradle.internal.ImmutableActionSet$SetWithFewActions.execute(ImmutableActionSet.java:285) + org.gradle.api.internal.DefaultDomainObjectCollection.doAdd(DefaultDomainObjectCollection.java:262) + org.gradle.api.internal.DefaultNamedDomainObjectCollection.doAdd(DefaultNamedDomainObjectCollection.java:113) + org.gradle.api.internal.DefaultDomainObjectCollection.add(DefaultDomainObjectCollection.java:256) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.tryCreate(DefaultNamedDomainObjectCollection.java:944) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.calculateOwnValue(DefaultNamedDomainObjectCollection.java:929) + org.gradle.api.internal.provider.AbstractMinimalProvider.calculateOwnPresentValue(AbstractMinimalProvider.java:72) + org.gradle.api.internal.provider.AbstractMinimalProvider.get(AbstractMinimalProvider.java:92) + org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.get(DefaultNamedDomainObjectCollection.java:915) + org.gradle.api.internal.DefaultDomainObjectCollection.addLater(DefaultDomainObjectCollection.java:286) + org.gradle.api.internal.DefaultNamedDomainObjectCollection.addLater(DefaultNamedDomainObjectCollection.java:146) + org.gradle.api.internal.AbstractNamedDomainObjectContainer.createDomainObjectProvider(AbstractNamedDomainObjectContainer.java:122) + org.gradle.api.internal.AbstractNamedDomainObjectContainer.register(AbstractNamedDomainObjectContainer.java:114) + org.jetbrains.kotlin.gradle.dsl.KotlinSourceSetConvention.getValue(KotlinSourceSetConvention.kt:49) + org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformSourceSetConventionsImpl.getJvmTest(KotlinMultiplatformSourceSetConventions.kt:91) + org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension.getJvmTest(KotlinMultiplatformExtension.kt) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jvmMain and jvmTest without jvm target$1.invokeSuspend(MppSourceSetConventionsDiagnosticTests.kt:24) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jvmMain and jvmTest without jvm target$1.invoke(MppSourceSetConventionsDiagnosticTests.kt) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests$test - jvmMain and jvmTest without jvm target$1.invoke(MppSourceSetConventionsDiagnosticTests.kt) + org.jetbrains.kotlin.gradle.util.LifecycleUtilsKt$runLifecycleAwareTest$1.invokeSuspend(lifecycleUtils.kt:15) + kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) + kotlin.coroutines.SafeContinuation.resumeWith(SafeContinuationJvm.kt:41) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl$launch$1.invoke(KotlinPluginLifecycleImpl.kt:159) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl$launch$1.invoke(KotlinPluginLifecycleImpl.kt:158) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.loopIfNecessary(KotlinPluginLifecycleImpl.kt:97) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.enqueue(KotlinPluginLifecycleImpl.kt:144) + org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycleImpl.launch(KotlinPluginLifecycleImpl.kt:158) + org.jetbrains.kotlin.gradle.util.LifecycleUtilsKt.runLifecycleAwareTest(lifecycleUtils.kt:15) + org.jetbrains.kotlin.gradle.unitTests.diagnosticsTests.MppSourceSetConventionsDiagnosticTests.test - jvmMain and jvmTest without jvm target(MppSourceSetConventionsDiagnosticTests.kt:20) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + java.base/java.lang.reflect.Method.invoke(Method.java:566) + org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) + org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) + org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) + org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) + org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) + org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) + org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) + org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) + org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) + org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) + org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) + org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) + org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) + org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) + org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) + org.junit.runners.ParentRunner.run(ParentRunner.java:413) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:108) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:57) + org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:39) + org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62) + org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:52) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + java.base/java.lang.reflect.Method.invoke(Method.java:566) + org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) + org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) + org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) + org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94) + com.sun.proxy.$Proxy2.processTestClass(Unknown Source) + org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176) + org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129) + org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100) + org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60) + org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) + org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113) + org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65) + worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) + worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) +---- +[UnusedSourceSetsWarning | WARNING] The following Kotlin source sets were configured but not added to any Kotlin compilation: + * jvmMain + * jvmTest +You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'. +See https://kotl.in/connecting-source-sets diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/PlatformSourceSetConventionUsedWithoutCorrespondingTarget-manually-created-jvmMain-jvmTest.txt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/PlatformSourceSetConventionUsedWithoutCorrespondingTarget-manually-created-jvmMain-jvmTest.txt new file mode 100644 index 00000000000..9334536dae8 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/PlatformSourceSetConventionUsedWithoutCorrespondingTarget-manually-created-jvmMain-jvmTest.txt @@ -0,0 +1,5 @@ +[UnusedSourceSetsWarning | WARNING] The following Kotlin source sets were configured but not added to any Kotlin compilation: + * jvmMain + * jvmTest +You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'. +See https://kotl.in/connecting-source-sets