Add '-opt-in' option into Gradle compiler options DSL
^KT-53924 Fixed
This commit is contained in:
committed by
Space Team
parent
2b4abb0c7b
commit
174f39aa46
+4
@@ -107,6 +107,10 @@ abstract class CommonCompilerArguments : CommonToolArguments() {
|
|||||||
field = value
|
field = value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GradleOption(
|
||||||
|
value = DefaultValue.EMPTY_STRING_ARRAY_DEFAULT,
|
||||||
|
gradleInputType = GradleInputTypes.INPUT
|
||||||
|
)
|
||||||
@Argument(
|
@Argument(
|
||||||
value = "-opt-in",
|
value = "-opt-in",
|
||||||
deprecatedName = "-Xopt-in",
|
deprecatedName = "-Xopt-in",
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ enum class DefaultValue {
|
|||||||
BOOLEAN_TRUE_DEFAULT,
|
BOOLEAN_TRUE_DEFAULT,
|
||||||
STRING_NULL_DEFAULT,
|
STRING_NULL_DEFAULT,
|
||||||
EMPTY_STRING_LIST_DEFAULT,
|
EMPTY_STRING_LIST_DEFAULT,
|
||||||
|
EMPTY_STRING_ARRAY_DEFAULT,
|
||||||
LANGUAGE_VERSIONS,
|
LANGUAGE_VERSIONS,
|
||||||
API_VERSIONS,
|
API_VERSIONS,
|
||||||
JVM_TARGET_VERSIONS,
|
JVM_TARGET_VERSIONS,
|
||||||
|
|||||||
@@ -39,6 +39,13 @@ open class DefaultValues(
|
|||||||
|
|
||||||
object EmptyStringListDefault : DefaultValues("emptyList<String>()", typeOf<List<String>>(), typeOf<List<String>>())
|
object EmptyStringListDefault : DefaultValues("emptyList<String>()", typeOf<List<String>>(), typeOf<List<String>>())
|
||||||
|
|
||||||
|
object EmptyStringArrayDefault : DefaultValues(
|
||||||
|
"emptyList<String>()",
|
||||||
|
typeOf<List<String>>(),
|
||||||
|
typeOf<List<String>>(),
|
||||||
|
toArgumentConverter = ".toTypedArray()"
|
||||||
|
)
|
||||||
|
|
||||||
object LanguageVersions : DefaultValues(
|
object LanguageVersions : DefaultValues(
|
||||||
"null",
|
"null",
|
||||||
typeOf<KotlinVersionDsl?>(),
|
typeOf<KotlinVersionDsl?>(),
|
||||||
|
|||||||
@@ -794,6 +794,7 @@ private val KProperty1<*, *>.gradleValues: DefaultValues
|
|||||||
DefaultValue.BOOLEAN_TRUE_DEFAULT -> DefaultValues.BooleanTrueDefault
|
DefaultValue.BOOLEAN_TRUE_DEFAULT -> DefaultValues.BooleanTrueDefault
|
||||||
DefaultValue.STRING_NULL_DEFAULT -> DefaultValues.StringNullDefault
|
DefaultValue.STRING_NULL_DEFAULT -> DefaultValues.StringNullDefault
|
||||||
DefaultValue.EMPTY_STRING_LIST_DEFAULT -> DefaultValues.EmptyStringListDefault
|
DefaultValue.EMPTY_STRING_LIST_DEFAULT -> DefaultValues.EmptyStringListDefault
|
||||||
|
DefaultValue.EMPTY_STRING_ARRAY_DEFAULT -> DefaultValues.EmptyStringArrayDefault
|
||||||
DefaultValue.JVM_TARGET_VERSIONS -> DefaultValues.JvmTargetVersions
|
DefaultValue.JVM_TARGET_VERSIONS -> DefaultValues.JvmTargetVersions
|
||||||
DefaultValue.LANGUAGE_VERSIONS -> DefaultValues.LanguageVersions
|
DefaultValue.LANGUAGE_VERSIONS -> DefaultValues.LanguageVersions
|
||||||
DefaultValue.API_VERSIONS -> DefaultValues.ApiVersions
|
DefaultValue.API_VERSIONS -> DefaultValues.ApiVersions
|
||||||
|
|||||||
@@ -165,6 +165,7 @@ public abstract interface class org/jetbrains/kotlin/gradle/dsl/KotlinArtifactsE
|
|||||||
public abstract interface class org/jetbrains/kotlin/gradle/dsl/KotlinCommonCompilerOptions : org/jetbrains/kotlin/gradle/dsl/KotlinCommonCompilerToolOptions {
|
public abstract interface class org/jetbrains/kotlin/gradle/dsl/KotlinCommonCompilerOptions : org/jetbrains/kotlin/gradle/dsl/KotlinCommonCompilerToolOptions {
|
||||||
public abstract fun getApiVersion ()Lorg/gradle/api/provider/Property;
|
public abstract fun getApiVersion ()Lorg/gradle/api/provider/Property;
|
||||||
public abstract fun getLanguageVersion ()Lorg/gradle/api/provider/Property;
|
public abstract fun getLanguageVersion ()Lorg/gradle/api/provider/Property;
|
||||||
|
public abstract fun getOptIn ()Lorg/gradle/api/provider/ListProperty;
|
||||||
public abstract fun getUseK2 ()Lorg/gradle/api/provider/Property;
|
public abstract fun getUseK2 ()Lorg/gradle/api/provider/Property;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+7
@@ -25,6 +25,13 @@ interface KotlinCommonCompilerOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCo
|
|||||||
@get:org.gradle.api.tasks.Input
|
@get:org.gradle.api.tasks.Input
|
||||||
val languageVersion: org.gradle.api.provider.Property<org.jetbrains.kotlin.gradle.dsl.KotlinVersion>
|
val languageVersion: org.gradle.api.provider.Property<org.jetbrains.kotlin.gradle.dsl.KotlinVersion>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable usages of API that requires opt-in with an opt-in requirement marker with the given fully qualified name
|
||||||
|
* Default value: emptyList<String>()
|
||||||
|
*/
|
||||||
|
@get:org.gradle.api.tasks.Input
|
||||||
|
val optIn: org.gradle.api.provider.ListProperty<kotlin.String>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compile using experimental K2. K2 is a new compiler pipeline, no compatibility guarantees are yet provided
|
* Compile using experimental K2. K2 is a new compiler pipeline, no compatibility guarantees are yet provided
|
||||||
* Default value: false
|
* Default value: false
|
||||||
|
|||||||
+161
@@ -138,4 +138,165 @@ internal class CompilerOptionsIT : KGPBaseTest() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("Should pass -opt-in from compiler options DSL")
|
||||||
|
@JvmGradlePluginTests
|
||||||
|
@GradleTest
|
||||||
|
fun passesOptInAnnotation(gradleVersion: GradleVersion) {
|
||||||
|
project(
|
||||||
|
projectName = "simpleProject",
|
||||||
|
gradleVersion = gradleVersion,
|
||||||
|
buildOptions = defaultBuildOptions.copy(logLevel = LogLevel.DEBUG)
|
||||||
|
) {
|
||||||
|
buildGradle.appendText(
|
||||||
|
"""
|
||||||
|
|
|
||||||
|
|tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask.class).configureEach {
|
||||||
|
| compilerOptions.optIn.addAll("kotlin.RequiresOptIn", "my.CustomOptIn")
|
||||||
|
|}
|
||||||
|
""".trimMargin()
|
||||||
|
)
|
||||||
|
|
||||||
|
build("compileKotlin") {
|
||||||
|
val compilerArgs = output
|
||||||
|
.lineSequence()
|
||||||
|
.first {
|
||||||
|
it.contains("Kotlin compiler args:")
|
||||||
|
}
|
||||||
|
.substringAfter("Kotlin compiler args:")
|
||||||
|
|
||||||
|
val expectedOptIn = "-opt-in kotlin.RequiresOptIn,my.CustomOptIn"
|
||||||
|
assert(compilerArgs.contains(expectedOptIn)) {
|
||||||
|
printBuildOutput()
|
||||||
|
"compiler arguments does not contain '$expectedOptIn' - actual value: $compilerArgs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@DisplayName("Should combine -opt-in arguments from languageSettings DSL")
|
||||||
|
@MppGradlePluginTests
|
||||||
|
@GradleTest
|
||||||
|
fun combinesOptInFromLanguageSettings(gradleVersion: GradleVersion) {
|
||||||
|
project(
|
||||||
|
projectName = "new-mpp-lib-and-app/sample-lib",
|
||||||
|
gradleVersion = gradleVersion,
|
||||||
|
buildOptions = defaultBuildOptions.copy(logLevel = LogLevel.DEBUG)
|
||||||
|
) {
|
||||||
|
buildGradle.appendText(
|
||||||
|
//language=Groovy
|
||||||
|
"""
|
||||||
|
|
|
||||||
|
|kotlin {
|
||||||
|
| sourceSets {
|
||||||
|
| jvm6Main {
|
||||||
|
| languageSettings.optIn("my.custom.OptInAnnotation")
|
||||||
|
| }
|
||||||
|
| }
|
||||||
|
|}
|
||||||
|
|
|
||||||
|
|tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask.class).configureEach {
|
||||||
|
| compilerOptions.optIn.add("another.custom.UnderOptIn")
|
||||||
|
|}
|
||||||
|
""".trimMargin()
|
||||||
|
)
|
||||||
|
|
||||||
|
build("compileKotlinJvm6", forceOutput = true) {
|
||||||
|
assertTasksExecuted(":compileKotlinJvm6")
|
||||||
|
assert(output.contains("-opt-in another.custom.UnderOptIn,my.custom.OptInAnnotation")) {
|
||||||
|
printBuildOutput()
|
||||||
|
"Output does not contain '-opt-in another.custom.UnderOptIn,my.custom.OptInAnnotation'!"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@DisplayName("Should combine -opt-in arguments from languageSettings DSL for Native")
|
||||||
|
@MppGradlePluginTests
|
||||||
|
@GradleTest
|
||||||
|
fun combinesOptInFromLanguageSettingsNative(gradleVersion: GradleVersion) {
|
||||||
|
project(
|
||||||
|
projectName = "new-mpp-lib-and-app/sample-lib",
|
||||||
|
gradleVersion = gradleVersion
|
||||||
|
) {
|
||||||
|
buildGradle.appendText(
|
||||||
|
//language=Groovy
|
||||||
|
"""
|
||||||
|
|
|
||||||
|
|kotlin {
|
||||||
|
| sourceSets {
|
||||||
|
| nativeMain {
|
||||||
|
| languageSettings.optIn("my.custom.OptInAnnotation")
|
||||||
|
| }
|
||||||
|
| linux64Main {
|
||||||
|
| languageSettings.optIn("my.custom.OptInAnnotation")
|
||||||
|
| }
|
||||||
|
| macos64Main {
|
||||||
|
| languageSettings.optIn("my.custom.OptInAnnotation")
|
||||||
|
| }
|
||||||
|
| }
|
||||||
|
|}
|
||||||
|
|
|
||||||
|
|tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask.class).configureEach {
|
||||||
|
| compilerOptions.optIn.add("another.custom.UnderOptIn")
|
||||||
|
|}
|
||||||
|
""".trimMargin()
|
||||||
|
)
|
||||||
|
|
||||||
|
build("compileNativeMainKotlinMetadata") {
|
||||||
|
assertTasksExecuted(":compileNativeMainKotlinMetadata")
|
||||||
|
assert(
|
||||||
|
output.contains("-opt-in=another.custom.UnderOptIn") &&
|
||||||
|
output.contains("-opt-in=my.custom.OptInAnnotation")
|
||||||
|
) {
|
||||||
|
printBuildOutput()
|
||||||
|
"Output does not contain '-opt-in=another.custom.UnderOptIn, -opt-in=my.custom.OptInAnnotation'!"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
build("compileKotlinLinux64") {
|
||||||
|
assertTasksExecuted(":compileKotlinLinux64")
|
||||||
|
assert(
|
||||||
|
output.contains("-opt-in=another.custom.UnderOptIn") &&
|
||||||
|
output.contains("-opt-in=my.custom.OptInAnnotation")
|
||||||
|
) {
|
||||||
|
printBuildOutput()
|
||||||
|
"Output does not contain '-opt-in=another.custom.UnderOptIn, -opt-in=my.custom.OptInAnnotation'!"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@DisplayName("Should pass -opt-in from compiler options DSL in native project")
|
||||||
|
@NativeGradlePluginTests
|
||||||
|
@GradleTest
|
||||||
|
fun passesOptInAnnotationNative(gradleVersion: GradleVersion) {
|
||||||
|
nativeProject(
|
||||||
|
projectName = "native-link-simple",
|
||||||
|
gradleVersion = gradleVersion,
|
||||||
|
) {
|
||||||
|
buildGradle.appendText(
|
||||||
|
"""
|
||||||
|
|
|
||||||
|
|tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask.class).configureEach {
|
||||||
|
| compilerOptions.optIn.addAll("kotlin.RequiresOptIn", "my.CustomOptIn")
|
||||||
|
|}
|
||||||
|
""".trimMargin()
|
||||||
|
)
|
||||||
|
|
||||||
|
build("compileKotlinHost", forceOutput = true) {
|
||||||
|
val expectedOptIn = listOf("-opt-in=kotlin.RequiresOptIn", "-opt-in=my.CustomOptIn")
|
||||||
|
val optInArgs = output
|
||||||
|
.substringAfter("Arguments = [")
|
||||||
|
.substringBefore("]")
|
||||||
|
.lines()
|
||||||
|
.filter { it.trim() in expectedOptIn }
|
||||||
|
|
||||||
|
assert(optInArgs.size == 2) {
|
||||||
|
printBuildOutput()
|
||||||
|
"compiler arguments does not contain '${expectedOptIn.joinToString()}': ${optInArgs.joinToString()}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+16
-3
@@ -810,11 +810,24 @@ open class NewMultiplatformIT : BaseGradleIT() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
listOf(
|
listOf(
|
||||||
"compileCommonMainKotlinMetadata", "compileKotlinJvm6", "compileKotlinNodeJs", "compileKotlinLinux64"
|
"compileCommonMainKotlinMetadata", "compileKotlinJvm6", "compileKotlinNodeJs"
|
||||||
).forEach {
|
).forEach {
|
||||||
build(it) {
|
build(it) {
|
||||||
assertSuccessful()
|
assertSuccessful()
|
||||||
assertTasksExecuted(":$it")
|
assertTasksExecuted(":$it")
|
||||||
|
assertContains(
|
||||||
|
"-XXLanguage:+InlineClasses",
|
||||||
|
"-progressive",
|
||||||
|
"-opt-in kotlin.ExperimentalUnsignedTypes,kotlin.contracts.ExperimentalContracts",
|
||||||
|
"-Xno-inline"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
listOf("compileNativeMainKotlinMetadata", "compileKotlinLinux64").forEach { task ->
|
||||||
|
build(task) {
|
||||||
|
assertSuccessful()
|
||||||
|
assertTasksExecuted(":$task")
|
||||||
assertContains(
|
assertContains(
|
||||||
"-XXLanguage:+InlineClasses",
|
"-XXLanguage:+InlineClasses",
|
||||||
"-progressive", "-opt-in=kotlin.ExperimentalUnsignedTypes",
|
"-progressive", "-opt-in=kotlin.ExperimentalUnsignedTypes",
|
||||||
@@ -1237,12 +1250,12 @@ open class NewMultiplatformIT : BaseGradleIT() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
assertEquals(
|
assertEquals(
|
||||||
setOf("commonMain"),
|
setOf("commonMain", "nativeMain"),
|
||||||
sourceJarSourceRoots[null]
|
sourceJarSourceRoots[null]
|
||||||
)
|
)
|
||||||
assertEquals(setOf("commonMain", "jvm6Main"), sourceJarSourceRoots["jvm6"])
|
assertEquals(setOf("commonMain", "jvm6Main"), sourceJarSourceRoots["jvm6"])
|
||||||
assertEquals(setOf("commonMain", "nodeJsMain"), sourceJarSourceRoots["nodejs"])
|
assertEquals(setOf("commonMain", "nodeJsMain"), sourceJarSourceRoots["nodejs"])
|
||||||
assertEquals(setOf("commonMain", "linux64Main"), sourceJarSourceRoots["linux64"])
|
assertEquals(setOf("commonMain", "nativeMain", "linux64Main"), sourceJarSourceRoots["linux64"])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
@@ -96,6 +96,10 @@ kotlin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nativeMain { dependsOn commonMain }
|
||||||
|
linux64Main { dependsOn nativeMain }
|
||||||
|
macos64Main { dependsOn nativeMain }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
package com.example.lib
|
||||||
|
|
||||||
|
fun welcomeToThisWorld() {
|
||||||
|
println("Hello world")
|
||||||
|
}
|
||||||
+5
@@ -15,6 +15,9 @@ internal abstract class KotlinCommonCompilerOptionsDefault @javax.inject.Inject
|
|||||||
override val languageVersion: org.gradle.api.provider.Property<org.jetbrains.kotlin.gradle.dsl.KotlinVersion> =
|
override val languageVersion: org.gradle.api.provider.Property<org.jetbrains.kotlin.gradle.dsl.KotlinVersion> =
|
||||||
objectFactory.property(org.jetbrains.kotlin.gradle.dsl.KotlinVersion::class.java)
|
objectFactory.property(org.jetbrains.kotlin.gradle.dsl.KotlinVersion::class.java)
|
||||||
|
|
||||||
|
override val optIn: org.gradle.api.provider.ListProperty<kotlin.String> =
|
||||||
|
objectFactory.listProperty(kotlin.String::class.java).convention(emptyList<String>())
|
||||||
|
|
||||||
@Deprecated(message = "Compiler flag -Xuse-k2 is deprecated; please use language version 2.0 instead", level = DeprecationLevel.WARNING)
|
@Deprecated(message = "Compiler flag -Xuse-k2 is deprecated; please use language version 2.0 instead", level = DeprecationLevel.WARNING)
|
||||||
override val useK2: org.gradle.api.provider.Property<kotlin.Boolean> =
|
override val useK2: org.gradle.api.provider.Property<kotlin.Boolean> =
|
||||||
objectFactory.property(kotlin.Boolean::class.java).convention(false)
|
objectFactory.property(kotlin.Boolean::class.java).convention(false)
|
||||||
@@ -23,6 +26,7 @@ internal abstract class KotlinCommonCompilerOptionsDefault @javax.inject.Inject
|
|||||||
super.fillCompilerArguments(args)
|
super.fillCompilerArguments(args)
|
||||||
args.apiVersion = apiVersion.orNull?.version
|
args.apiVersion = apiVersion.orNull?.version
|
||||||
args.languageVersion = languageVersion.orNull?.version
|
args.languageVersion = languageVersion.orNull?.version
|
||||||
|
args.optIn = optIn.get().toTypedArray()
|
||||||
args.useK2 = useK2.get()
|
args.useK2 = useK2.get()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,6 +34,7 @@ internal abstract class KotlinCommonCompilerOptionsDefault @javax.inject.Inject
|
|||||||
super.fillDefaultValues(args)
|
super.fillDefaultValues(args)
|
||||||
args.apiVersion = null
|
args.apiVersion = null
|
||||||
args.languageVersion = null
|
args.languageVersion = null
|
||||||
|
args.optIn = emptyList<String>().toTypedArray()
|
||||||
args.useK2 = false
|
args.useK2 = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-4
@@ -106,6 +106,7 @@ internal fun applyLanguageSettingsToCompilerOptions(
|
|||||||
) = with(compilerOptions) {
|
) = with(compilerOptions) {
|
||||||
languageVersion.convention(languageSettingsBuilder.languageVersion?.let { KotlinVersion.fromVersion(it) })
|
languageVersion.convention(languageSettingsBuilder.languageVersion?.let { KotlinVersion.fromVersion(it) })
|
||||||
apiVersion.convention(languageSettingsBuilder.apiVersion?.let { KotlinVersion.fromVersion(it) })
|
apiVersion.convention(languageSettingsBuilder.apiVersion?.let { KotlinVersion.fromVersion(it) })
|
||||||
|
optIn.addAll(languageSettingsBuilder.optInAnnotationsInUse)
|
||||||
|
|
||||||
val freeArgs = mutableListOf<String>().apply {
|
val freeArgs = mutableListOf<String>().apply {
|
||||||
if (languageSettingsBuilder.progressiveMode) {
|
if (languageSettingsBuilder.progressiveMode) {
|
||||||
@@ -116,10 +117,6 @@ internal fun applyLanguageSettingsToCompilerOptions(
|
|||||||
add("-XXLanguage:+$featureName")
|
add("-XXLanguage:+$featureName")
|
||||||
}
|
}
|
||||||
|
|
||||||
languageSettingsBuilder.optInAnnotationsInUse.forEach { annotationName ->
|
|
||||||
add("-opt-in=$annotationName")
|
|
||||||
}
|
|
||||||
|
|
||||||
if (languageSettingsBuilder is DefaultLanguageSettingsBuilder) {
|
if (languageSettingsBuilder is DefaultLanguageSettingsBuilder) {
|
||||||
addAll(languageSettingsBuilder.freeCompilerArgs)
|
addAll(languageSettingsBuilder.freeCompilerArgs)
|
||||||
}
|
}
|
||||||
|
|||||||
+11
-2
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.gradle.plugin.sources.*
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
|
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
|
||||||
import org.jetbrains.kotlin.gradle.targets.native.internal.*
|
import org.jetbrains.kotlin.gradle.targets.native.internal.*
|
||||||
import org.jetbrains.kotlin.gradle.tasks.*
|
import org.jetbrains.kotlin.gradle.tasks.*
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.*
|
||||||
import org.jetbrains.kotlin.gradle.utils.filesProvider
|
import org.jetbrains.kotlin.gradle.utils.filesProvider
|
||||||
import org.jetbrains.kotlin.gradle.utils.getResolvedArtifactsCompat
|
import org.jetbrains.kotlin.gradle.utils.getResolvedArtifactsCompat
|
||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
@@ -81,8 +82,7 @@ class KotlinMetadataTargetConfigurator :
|
|||||||
compileKotlinTaskProvider.configure { it.onlyIf { isCompatibilityMetadataVariantEnabled } }
|
compileKotlinTaskProvider.configure { it.onlyIf { isCompatibilityMetadataVariantEnabled } }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val allMetadataJar = target.project.tasks.named<Jar>(ALL_METADATA_JAR_NAME)
|
||||||
val allMetadataJar = target.project.tasks.withType<Jar>().named(ALL_METADATA_JAR_NAME)
|
|
||||||
createMetadataCompilationsForCommonSourceSets(target, allMetadataJar)
|
createMetadataCompilationsForCommonSourceSets(target, allMetadataJar)
|
||||||
|
|
||||||
configureProjectStructureMetadataGeneration(target.project, allMetadataJar)
|
configureProjectStructureMetadataGeneration(target.project, allMetadataJar)
|
||||||
@@ -319,6 +319,15 @@ class KotlinMetadataTargetConfigurator :
|
|||||||
compileDependencyFiles = project.files()
|
compileDependencyFiles = project.files()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
target.project.runOnceAfterEvaluated("Sync common compilation language settings to compiler options") {
|
||||||
|
target.compilations.all { compilation ->
|
||||||
|
applyLanguageSettingsToCompilerOptions(
|
||||||
|
compilation.defaultSourceSet.languageSettings,
|
||||||
|
compilation.compilerOptions.options
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -180,7 +180,6 @@ internal fun buildKotlinNativeCompileCommonArgs(
|
|||||||
languageSettings.run {
|
languageSettings.run {
|
||||||
addKey("-progressive", progressiveMode)
|
addKey("-progressive", progressiveMode)
|
||||||
enabledLanguageFeatures.forEach { add("-XXLanguage:+$it") }
|
enabledLanguageFeatures.forEach { add("-XXLanguage:+$it") }
|
||||||
optInAnnotationsInUse.forEach { add("-opt-in=$it") }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
addArgIfNotNull("-language-version", compilerOptions.languageVersion.orNull?.version)
|
addArgIfNotNull("-language-version", compilerOptions.languageVersion.orNull?.version)
|
||||||
@@ -188,6 +187,7 @@ internal fun buildKotlinNativeCompileCommonArgs(
|
|||||||
addKey("-Werror", compilerOptions.allWarningsAsErrors.get())
|
addKey("-Werror", compilerOptions.allWarningsAsErrors.get())
|
||||||
addKey("-nowarn", compilerOptions.suppressWarnings.get())
|
addKey("-nowarn", compilerOptions.suppressWarnings.get())
|
||||||
addKey("-verbose", compilerOptions.verbose.get())
|
addKey("-verbose", compilerOptions.verbose.get())
|
||||||
|
compilerOptions.optIn.get().forEach { add("-opt-in=$it") }
|
||||||
|
|
||||||
addAll(compilerOptions.freeCompilerArgs.get())
|
addAll(compilerOptions.freeCompilerArgs.get())
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-1
@@ -379,8 +379,12 @@ internal constructor(
|
|||||||
val enabledLanguageFeatures: Set<String>
|
val enabledLanguageFeatures: Set<String>
|
||||||
@Input get() = languageSettings.enabledLanguageFeatures
|
@Input get() = languageSettings.enabledLanguageFeatures
|
||||||
|
|
||||||
|
@Deprecated(
|
||||||
|
message = "Replaced with compilerOptions.optIn",
|
||||||
|
replaceWith = ReplaceWith("compilerOptions.optIn")
|
||||||
|
)
|
||||||
val optInAnnotationsInUse: Set<String>
|
val optInAnnotationsInUse: Set<String>
|
||||||
@Input get() = languageSettings.optInAnnotationsInUse
|
@Internal get() = compilerOptions.optIn.get().toSet()
|
||||||
// endregion.
|
// endregion.
|
||||||
|
|
||||||
// region Kotlin options
|
// region Kotlin options
|
||||||
|
|||||||
Reference in New Issue
Block a user