diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CompilerOptionsProjectIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CompilerOptionsProjectIT.kt index 4bfb290b7db..6a9e4c5c471 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CompilerOptionsProjectIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CompilerOptionsProjectIT.kt @@ -477,4 +477,81 @@ class CompilerOptionsProjectIT : KGPBaseTest() { } } } + + @GradleTest + @DisplayName("Multiplatform compiler option DSL hierarchy") + @JvmGradlePluginTests + fun mppCompilerOptionsDsl(gradleVersion: GradleVersion) { + project( + projectName = "mpp-default-hierarchy", + gradleVersion = gradleVersion, + buildOptions = defaultBuildOptions.copy(logLevel = LogLevel.DEBUG) + ) { + buildGradle.modify { + it.substringBefore("kotlin {") + + //language=Groovy + """ + | + |import org.jetbrains.kotlin.gradle.dsl.JvmTarget + |import org.jetbrains.kotlin.gradle.dsl.KotlinVersion + | + |kotlin { + | jvm { + | compilerOptions { + | languageVersion = KotlinVersion.KOTLIN_1_8 + | apiVersion = KotlinVersion.KOTLIN_1_8 + | jvmTarget.value(JvmTarget.JVM_11).disallowChanges() + | javaParameters = true + | } + | } + | + | js { + | compilerOptions { + | languageVersion = KotlinVersion.KOTLIN_2_0 + | apiVersion = KotlinVersion.KOTLIN_2_0 + | friendModulesDisabled = true + | } + | } + | + | linuxX64 { + | compilerOptions { + | progressiveMode = true + | } + | } + | + | compilerOptions { + | languageVersion = KotlinVersion.KOTLIN_1_7 + | apiVersion = KotlinVersion.KOTLIN_1_7 + | } + |} + """.trimMargin() + } + + build(":compileCommonMainKotlinMetadata") { + assertCompilerArguments(":compileCommonMainKotlinMetadata", "-language-version 1.7", "-api-version 1.7") + } + + build(":compileKotlinJvm", enableGradleDebug = true) { + assertCompilerArguments( + ":compileKotlinJvm", + "-language-version 1.8", + "-api-version 1.8", + "-java-parameters", + "-jvm-target 11" + ) + } + + build(":compileKotlinJs") { + assertCompilerArguments(":compileKotlinJs", "-language-version 2.0", "-api-version 2.0", "-Xfriend-modules-disabled") + } + + build(":compileKotlinLinuxX64") { + extractNativeTasksCommandLineArgumentsFromOutput(":compileKotlinLinuxX64") { + assertCommandLineArgumentsContain("-language-version", "1.7") + assertCommandLineArgumentsContain("-api-version", "1.7") + assertCommandLineArgumentsContain("-progressive") + } + } + } + } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-default-hierarchy/src/commonMain/kotlin/Logger.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-default-hierarchy/src/commonMain/kotlin/Logger.kt new file mode 100644 index 00000000000..cb8f19e0828 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-default-hierarchy/src/commonMain/kotlin/Logger.kt @@ -0,0 +1,12 @@ +/* + * 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 com.example + +class Logger { + fun printLog(text: String) { + println("LOG: $text") + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-default-hierarchy/src/jsMain/kotlin/main.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-default-hierarchy/src/jsMain/kotlin/main.kt new file mode 100644 index 00000000000..1c6d9183adc --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-default-hierarchy/src/jsMain/kotlin/main.kt @@ -0,0 +1,5 @@ +package com.example + +fun main() { + Logger().printLog("Hello!") +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-default-hierarchy/src/jvmMain/kotlin/main.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-default-hierarchy/src/jvmMain/kotlin/main.kt new file mode 100644 index 00000000000..1c6d9183adc --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-default-hierarchy/src/jvmMain/kotlin/main.kt @@ -0,0 +1,5 @@ +package com.example + +fun main() { + Logger().printLog("Hello!") +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-default-hierarchy/src/linuxX64Main/kotlin/main.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-default-hierarchy/src/linuxX64Main/kotlin/main.kt new file mode 100644 index 00000000000..1c6d9183adc --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/mpp-default-hierarchy/src/linuxX64Main/kotlin/main.kt @@ -0,0 +1,5 @@ +package com.example + +fun main() { + Logger().printLog("Hello!") +}