From e07e92c94592ef89edc4d7cecbbc64f4f209b47a Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Wed, 16 Nov 2022 16:57:41 +0100 Subject: [PATCH] Raise 'kotlin.jvm.target.validation.mode' default value to 'error'. Now target check intentionally runs always - even when Java sources are empty. Java part configures publication 'org.gradle.jvm.version' attribute which affect published artifact consumers and should be the same as Kotlin jvmTarget value. ^KT-54993 Fixed --- libraries/stdlib/jdk8/build.gradle | 5 ++ .../kotlin/gradle/JvmTargetValidationTest.kt | 68 +++++++++---------- .../org/jetbrains/kotlin/gradle/Kapt3IT.kt | 21 ++++-- .../gradle/KaptIncrementalWithIsolatingApt.kt | 2 +- .../kotlin/gradle/KotlinJavaToolchainTest.kt | 24 +++++++ .../org/jetbrains/kotlin/gradle/UpToDateIT.kt | 8 +++ .../kotlin/gradle/android/Kapt3AndroidIT.kt | 8 +++ .../libJvmClassesOnly/build.gradle | 7 +- .../jvmAndJsProject/jvmLib/build.gradle | 5 ++ .../lib-jvm/build.gradle | 7 +- .../kapt2/jpms-module/build.gradle | 4 ++ .../testProject/kapt2/simple/build.gradle | 2 +- .../build.gradle | 5 ++ .../build.gradle | 5 ++ .../new-mpp-android/lib/build.gradle | 4 ++ .../gradle/plugin/PropertiesProvider.kt | 2 +- .../jetbrains/kotlin/gradle/tasks/Tasks.kt | 47 ++++++------- .../configuration/KotlinCompileConfig.kt | 1 - 18 files changed, 148 insertions(+), 77 deletions(-) diff --git a/libraries/stdlib/jdk8/build.gradle b/libraries/stdlib/jdk8/build.gradle index 6dab4740ecc..fd23bb54a7e 100644 --- a/libraries/stdlib/jdk8/build.gradle +++ b/libraries/stdlib/jdk8/build.gradle @@ -110,6 +110,11 @@ task testJdk6Tests(type: Test) { thisTask -> }) } +tasks.named("compileModuleTestJava", JavaCompile) { + sourceCompatibility = JavaVersion.VERSION_1_9 + targetCompatibility = JavaVersion.VERSION_1_9 +} + compileModuleTestKotlin { kotlinJavaToolchain.toolchain.use(JvmToolchain.getToolchainLauncherFor(project, JdkMajorVersion.JDK_9_0)) } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/JvmTargetValidationTest.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/JvmTargetValidationTest.kt index 153dcf588a7..94f92cef0b9 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/JvmTargetValidationTest.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/JvmTargetValidationTest.kt @@ -21,9 +21,9 @@ import kotlin.io.path.writeText @JvmGradlePluginTests class JvmTargetValidationTest : KGPBaseTest() { - @DisplayName("Should produce warning if java and kotlin jvm targets are different") + @DisplayName("Should produce error if java and kotlin jvm targets are different") @GradleTest - internal fun shouldWarnIfJavaAndKotlinJvmTargetsAreDifferent(gradleVersion: GradleVersion) { + internal fun shouldFailIfJavaAndKotlinJvmTargetsAreDifferent(gradleVersion: GradleVersion) { project( projectName = "kotlinJavaProject".fullProjectName, gradleVersion = gradleVersion, @@ -32,18 +32,19 @@ class JvmTargetValidationTest : KGPBaseTest() { setJavaCompilationCompatibility(JavaVersion.VERSION_1_8) useToolchainToCompile(11) - build("assemble") { + buildAndFail("assemble") { assertOutputContains( "'compileJava' task (current target is 1.8) and 'compileKotlin' task (current target is 11) jvm target compatibility " + - "should be set to the same Java version." + "should be set to the same Java version.\n" + + "Consider using JVM toolchain: https://kotl.in/gradle/jvm/toolchain" ) } } } - @DisplayName("Should fail the build if verification mode is 'error' and kotlin and java targets are different") + @DisplayName("Should warn in the build log if verification mode is 'warning' and kotlin and java targets are different") @GradleTest - internal fun shouldFailBuildIfJavaAndKotlinJvmTargetsAreDifferent(gradleVersion: GradleVersion) { + internal fun shouldWarnBuildIfJavaAndKotlinJvmTargetsAreDifferent(gradleVersion: GradleVersion) { project( projectName = "kotlinJavaProject".fullProjectName, gradleVersion = gradleVersion @@ -54,14 +55,15 @@ class JvmTargetValidationTest : KGPBaseTest() { gradleProperties.append( """ # suppress inspection "UnusedProperty" - kotlin.jvm.target.validation.mode = error + kotlin.jvm.target.validation.mode = warning """.trimIndent() ) - buildAndFail("assemble") { + build("assemble") { assertOutputContains( "'compileJava' task (current target is 1.8) and 'compileKotlin' task (current target is 11) jvm target compatibility " + - "should be set to the same Java version." + "should be set to the same Java version.\n" + + "Consider using JVM toolchain: https://kotl.in/gradle/jvm/toolchain" ) } } @@ -124,7 +126,14 @@ class JvmTargetValidationTest : KGPBaseTest() { ) { useToolchainToCompile(11) - JavaVersion.VERSION_1_8 + //language=properties + gradleProperties.append( + """ + # suppress inspection "UnusedProperty" + kotlin.jvm.target.validation.mode = warning + """.trimIndent() + ) + //language=Groovy buildGradle.append( """ @@ -173,13 +182,6 @@ class JvmTargetValidationTest : KGPBaseTest() { """.trimIndent() ) - //language=properties - gradleProperties.append( - """ - # suppress inspection "UnusedProperty" - kotlin.jvm.target.validation.mode = error - """.trimIndent() - ) build("build") } @@ -194,13 +196,7 @@ class JvmTargetValidationTest : KGPBaseTest() { ) { setJavaCompilationCompatibility(JavaVersion.VERSION_1_8) useToolchainToCompile(11) - //language=properties - gradleProperties.append( - """ - # suppress inspection "UnusedProperty" - kotlin.jvm.target.validation.mode = error - """.trimIndent() - ) + kotlinSourcesDir().toFile().deleteRecursively() javaSourcesDir().resolve("demo/HelloWorld.java").deleteExisting() @@ -224,9 +220,9 @@ class JvmTargetValidationTest : KGPBaseTest() { } } - @DisplayName("Should skip JVM target validation if no java sources are available") + @DisplayName("Should still do JVM target validation if no java sources are available") @GradleTest - internal fun shouldSkipJvmTargetValidationNoJavaSources(gradleVersion: GradleVersion) { + internal fun shouldDoJvmTargetValidationOnNoJavaSources(gradleVersion: GradleVersion) { project( projectName = "simple".fullProjectName, gradleVersion = gradleVersion, @@ -236,11 +232,17 @@ class JvmTargetValidationTest : KGPBaseTest() { gradleProperties.append( """ # suppress inspection "UnusedProperty" - kotlin.jvm.target.validation.mode = error + kotlin.jvm.target.validation.mode = warning """.trimIndent() ) - build("assemble") + build("assemble") { + assertOutputContains( + "'compileJava' task (current target is 11) and 'compileKotlin' task (current target is 1.8) jvm target compatibility " + + "should be set to the same Java version.\n" + + "Consider using JVM toolchain: https://kotl.in/gradle/jvm/toolchain" + ) + } } } @@ -264,7 +266,7 @@ class JvmTargetValidationTest : KGPBaseTest() { ) build("assemble") { - assertOutputDoesNotContain( + assertOutputContains( "'compileJava' task (current target is 11) and 'compileKotlin' task (current target is 1.8) jvm target compatibility should be set to the same Java version." ) } @@ -302,14 +304,6 @@ class JvmTargetValidationTest : KGPBaseTest() { gradleVersion = gradleVersion, buildJdk = getJdk11().javaHome ) { - //language=properties - gradleProperties.append( - """ - # suppress inspection "UnusedProperty" - kotlin.jvm.target.validation.mode = error - """.trimIndent() - ) - val toolchainJavaVersion = if (gradleVersion < GradleVersion.version("6.9")) { 15 } else { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt index 87693389abd..73c1224af1b 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt @@ -33,6 +33,7 @@ import org.junit.jupiter.api.condition.OS import java.nio.file.Files import java.util.zip.ZipFile import java.util.zip.ZipOutputStream +import kotlin.io.path.appendText import kotlin.io.path.deleteExisting import kotlin.io.path.outputStream import kotlin.test.assertEquals @@ -139,6 +140,17 @@ open class Kapt3IT : Kapt3BaseIT() { gradleVersion, buildJdk = jdk.location ) { + //language=Groovy + buildGradle.appendText( + """ + | + |java { + | sourceCompatibility = JavaVersion.VERSION_1_8 + | targetCompatibility = JavaVersion.VERSION_1_8 + |} + """.trimMargin() + ) + build("assemble") { assertTasksExecuted(":kaptGenerateStubsKotlin", ":kaptKotlin") // Check added because of https://youtrack.jetbrains.com/issue/KT-33056. @@ -929,16 +941,11 @@ open class Kapt3IT : Kapt3BaseIT() { } @DisplayName("Works with JPMS on JDK 9+") - @JdkVersions(versions = [JavaVersion.VERSION_11]) - @GradleWithJdkTest - fun testJpmsModule( - gradleVersion: GradleVersion, - jdk: JdkVersions.ProvidedJdk - ) { + @GradleTest + fun testJpmsModule(gradleVersion: GradleVersion, ) { project( "jpms-module".withPrefix, gradleVersion, - buildJdk = jdk.location ) { build("assemble") { assertTasksExecuted(":kaptKotlin", ":kaptGenerateStubsKotlin", ":compileKotlin", ":compileJava") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalWithIsolatingApt.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalWithIsolatingApt.kt index 8fd5fa8aaaa..dcbc6b792f4 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalWithIsolatingApt.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalWithIsolatingApt.kt @@ -165,7 +165,7 @@ class KaptIncrementalWithIsolatingApt : KaptIncrementalIT() { } @DisplayName("KT-33617: sources in compile classpath jars") - @JdkVersions(versions = [JavaVersion.VERSION_1_9]) + @JdkVersions(versions = [JavaVersion.VERSION_11]) @GradleWithJdkTest fun testSourcesInCompileClasspathJars(gradleVersion: GradleVersion, jdk: JdkVersions.ProvidedJdk) { kaptProject(gradleVersion, buildJdk = jdk.location) { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinJavaToolchainTest.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinJavaToolchainTest.kt index ac0f1648498..dce36153c8b 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinJavaToolchainTest.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinJavaToolchainTest.kt @@ -357,6 +357,14 @@ class KotlinJavaToolchainTest : KGPBaseTest() { JavaVersion.VERSION_11 ) + //language=properties + gradleProperties.append( + """ + # suppress inspection "UnusedProperty" + kotlin.jvm.target.validation.mode = warning + """.trimIndent() + ) + build("build") { assertOutputContains("-jvm-target 11") assertOutputDoesNotContain("-jvm-target 1.8") @@ -414,6 +422,14 @@ class KotlinJavaToolchainTest : KGPBaseTest() { setJvmTarget("1.8") useToolchainToCompile(11) + //language=properties + gradleProperties.append( + """ + # suppress inspection "UnusedProperty" + kotlin.jvm.target.validation.mode = warning + """.trimIndent() + ) + build("build") { assertOutputContains("-jvm-target 1.8") assertOutputDoesNotContain("-jvm-target 11") @@ -553,6 +569,14 @@ class KotlinJavaToolchainTest : KGPBaseTest() { gradleVersion = gradleVersion, buildJdk = getJdk11().javaHome ) { + //language=properties + gradleProperties.append( + """ + # suppress inspection "UnusedProperty" + kotlin.jvm.target.validation.mode = warning + """.trimIndent() + ) + //language=Groovy buildGradle.append( """ diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/UpToDateIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/UpToDateIT.kt index 1d9c031f6b1..69df1732280 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/UpToDateIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/UpToDateIT.kt @@ -65,6 +65,14 @@ class UpToDateIT : KGPBaseTest() { mutations: Set ) { project("kotlinProject", gradleVersion) { + //language=properties + gradleProperties.append( + """ + # suppress inspection "UnusedProperty" + kotlin.jvm.target.validation.mode = warning + """.trimIndent() + ) + mutations.forEach { mutation -> mutation.initProject(this) build("classes") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt3AndroidIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt3AndroidIT.kt index 59b63bfff19..f03deffafc5 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt3AndroidIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/Kapt3AndroidIT.kt @@ -131,6 +131,14 @@ class Kapt3AndroidIT : Kapt3BaseIT() { buildOptions = defaultBuildOptions.copy(androidVersion = agpVersion), buildJdk = jdkVersion.location ) { + //language=properties + gradleProperties.append( + """ + # suppress inspection "UnusedProperty" + kotlin.jvm.target.validation.mode = warning + """.trimIndent() + ) + buildGradle.appendText( """ apply plugin: 'kotlin-kapt' diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libJvmClassesOnly/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libJvmClassesOnly/build.gradle index c27bc6f3fc0..81495e7aa5e 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libJvmClassesOnly/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libJvmClassesOnly/build.gradle @@ -2,4 +2,9 @@ apply plugin: 'kotlin' dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" -} \ No newline at end of file +} + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvmAndJsProject/jvmLib/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvmAndJsProject/jvmLib/build.gradle index 546933fb729..48952c46ed1 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvmAndJsProject/jvmLib/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/jvmAndJsProject/jvmLib/build.gradle @@ -1,3 +1,8 @@ plugins { id "org.jetbrains.kotlin.jvm" } + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-jvm/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-jvm/build.gradle index c27bc6f3fc0..81495e7aa5e 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-jvm/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-inter-project-ic/lib-jvm/build.gradle @@ -2,4 +2,9 @@ apply plugin: 'kotlin' dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" -} \ No newline at end of file +} + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/jpms-module/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/jpms-module/build.gradle index 14ae9088e5f..b4fd59fb815 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/jpms-module/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/jpms-module/build.gradle @@ -23,6 +23,10 @@ dependencies { compileKotlin.kotlinOptions.allWarningsAsErrors = true +kotlin { + jvmToolchain(11) +} + compileJava { doFirst { options.compilerArgs += [ diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/simple/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/simple/build.gradle index 25233eb29e3..84961752565 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/simple/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/simple/build.gradle @@ -16,4 +16,4 @@ dependencies { testImplementation 'junit:junit:4.13.2' } -compileKotlin.kotlinOptions.allWarningsAsErrors = true \ No newline at end of file +compileKotlin.kotlinOptions.allWarningsAsErrors = true diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptIncrementalAggregatingProcessorProject/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptIncrementalAggregatingProcessorProject/build.gradle index 2be31d381cb..43467707ea7 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptIncrementalAggregatingProcessorProject/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptIncrementalAggregatingProcessorProject/build.gradle @@ -12,6 +12,11 @@ repositories { } } +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} + dependencies { implementation "org.jetbrains.kotlin:annotation-processor-example:$kotlin_version" kapt "org.jetbrains.kotlin:annotation-processor-example:$kotlin_version" diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptIncrementalCompilationProject/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptIncrementalCompilationProject/build.gradle index 7ede7ec2b6f..f86d1c506b6 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptIncrementalCompilationProject/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kaptIncrementalCompilationProject/build.gradle @@ -12,6 +12,11 @@ repositories { } } +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} + dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation "org.jetbrains.kotlin:annotation-processor-example:$kotlin_version" diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-android/lib/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-android/lib/build.gradle index dd551d3b4ba..f6f37d534c3 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-android/lib/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-android/lib/build.gradle @@ -25,6 +25,10 @@ android { } } + compileOptions { + targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_1_8 + } } dependencies { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/PropertiesProvider.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/PropertiesProvider.kt index be1c49497d6..308d82b8c65 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/PropertiesProvider.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/PropertiesProvider.kt @@ -417,7 +417,7 @@ internal class PropertiesProvider private constructor(private val project: Proje } val jvmTargetValidationMode: JvmTargetValidationMode - get() = enumProperty("kotlin.jvm.target.validation.mode", JvmTargetValidationMode.WARNING) + get() = enumProperty("kotlin.jvm.target.validation.mode", JvmTargetValidationMode.ERROR) val kotlinDaemonJvmArgs: String? get() = this.property("kotlin.daemon.jvmargs") diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index 3e79d470831..224859baf9a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -641,9 +641,6 @@ abstract class KotlinCompile @Inject constructor( @get:Internal internal abstract val associatedJavaCompileTaskTargetCompatibility: Property - @get:Internal - internal abstract val associatedJavaCompileTaskSources: ConfigurableFileCollection - @get:Internal internal abstract val associatedJavaCompileTaskName: Property @@ -733,7 +730,7 @@ abstract class KotlinCompile @Inject constructor( inputChanges: InputChanges, taskOutputsBackup: TaskOutputsBackup? ) { - validateKotlinAndJavaHasSameTargetCompatibility(args, kotlinSources) + validateKotlinAndJavaHasSameTargetCompatibility(args) val scriptSources = scriptSources.asFileTree.files val gradlePrintingMessageCollector = GradlePrintingMessageCollector(logger, args.allWarningsAsErrors,) @@ -784,31 +781,27 @@ abstract class KotlinCompile @Inject constructor( private fun validateKotlinAndJavaHasSameTargetCompatibility( args: K2JVMCompilerArguments, - kotlinSources: Set ) { - val mixedSourcesArePresent = !associatedJavaCompileTaskSources.isEmpty && - kotlinSources.isNotEmpty() - if (mixedSourcesArePresent) { - associatedJavaCompileTaskTargetCompatibility.orNull?.let { targetCompatibility -> - val normalizedJavaTarget = when (targetCompatibility) { - "6" -> "1.6" - "7" -> "1.7" - "8" -> "1.8" - "1.9" -> "9" - else -> targetCompatibility - } + associatedJavaCompileTaskTargetCompatibility.orNull?.let { targetCompatibility -> + val normalizedJavaTarget = when (targetCompatibility) { + "6" -> "1.6" + "7" -> "1.7" + "8" -> "1.8" + "1.9" -> "9" + else -> targetCompatibility + } - val jvmTarget = args.jvmTarget ?: JvmTarget.DEFAULT.toString() - if (normalizedJavaTarget != jvmTarget) { - val javaTaskName = associatedJavaCompileTaskName.get() - val errorMessage = "'$javaTaskName' task (current target is $targetCompatibility) and " + - "'$name' task (current target is $jvmTarget) " + - "jvm target compatibility should be set to the same Java version." - when (jvmTargetValidationMode.get()) { - PropertiesProvider.JvmTargetValidationMode.ERROR -> throw GradleException(errorMessage) - PropertiesProvider.JvmTargetValidationMode.WARNING -> logger.warn(errorMessage) - else -> Unit - } + val jvmTarget = args.jvmTarget ?: JvmTarget.DEFAULT.toString() + if (normalizedJavaTarget != jvmTarget) { + val javaTaskName = associatedJavaCompileTaskName.get() + val errorMessage = "'$javaTaskName' task (current target is $targetCompatibility) and " + + "'$name' task (current target is $jvmTarget) " + + "jvm target compatibility should be set to the same Java version.\n" + + "Consider using JVM toolchain: https://kotl.in/gradle/jvm/toolchain" + when (jvmTargetValidationMode.get()) { + PropertiesProvider.JvmTargetValidationMode.ERROR -> throw GradleException(errorMessage) + PropertiesProvider.JvmTargetValidationMode.WARNING -> logger.warn(errorMessage) + else -> Unit } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/KotlinCompileConfig.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/KotlinCompileConfig.kt index 03f96a4a157..a2df4b7f124 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/KotlinCompileConfig.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/KotlinCompileConfig.kt @@ -72,7 +72,6 @@ internal open class BaseKotlinCompileConfig : AbstractKotl taskProvider.configure { task -> javaTaskProvider?.let { task.associatedJavaCompileTaskTargetCompatibility.value(javaTaskProvider.map { it.targetCompatibility }) - task.associatedJavaCompileTaskSources.from(javaTaskProvider.map { it.source }) task.associatedJavaCompileTaskName.value(javaTaskProvider.name) }