From 6509b0201c1266d71dc897ad19820f52f8ce4070 Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Thu, 9 Mar 2023 19:15:17 +0100 Subject: [PATCH] Add method to sync options from one instance to another as convention ^KT-57159 In Progress --- .../arguments/GenerateGradleOptions.kt | 15 +++++++++++++ .../dsl/KotlinCommonCompilerOptionsHelper.kt | 12 +++++++++++ .../KotlinCommonCompilerToolOptionsHelper.kt | 10 +++++++++ .../dsl/KotlinJsCompilerOptionsHelper.kt | 21 +++++++++++++++++++ .../KotlinJsDceCompilerToolOptionsHelper.kt | 9 ++++++++ .../dsl/KotlinJvmCompilerOptionsHelper.kt | 11 ++++++++++ ...ultiplatformCommonCompilerOptionsHelper.kt | 7 +++++++ .../dsl/KotlinNativeCompilerOptionsHelper.kt | 8 +++++++ 8 files changed, 93 insertions(+) diff --git a/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt b/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt index 64bacee6f98..994da8b3a7c 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt +++ b/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt @@ -746,6 +746,21 @@ private fun Printer.generateCompilerOptionsHelper( addAdditionalJvmArgs(helperName) } println("}") + + println() + println("internal fun syncOptionsAsConvention(") + withIndent { + println("from: $type,") + println("into: $type,") + } + println(") {") + withIndent { + if (parentHelperName != null) println("$parentHelperName.syncOptionsAsConvention(from, into)") + for (property in properties) { + println("into.${property.name}.convention(from.${property.name})") + } + } + println("}") } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCommonCompilerOptionsHelper.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCommonCompilerOptionsHelper.kt index f494edb428c..24058ae2dc1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCommonCompilerOptionsHelper.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCommonCompilerOptionsHelper.kt @@ -29,4 +29,16 @@ internal object KotlinCommonCompilerOptionsHelper { args.progressiveMode = false args.useK2 = false } + + internal fun syncOptionsAsConvention( + from: org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions, + into: org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions, + ) { + org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerToolOptionsHelper.syncOptionsAsConvention(from, into) + into.apiVersion.convention(from.apiVersion) + into.languageVersion.convention(from.languageVersion) + into.optIn.convention(from.optIn) + into.progressiveMode.convention(from.progressiveMode) + into.useK2.convention(from.useK2) + } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCommonCompilerToolOptionsHelper.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCommonCompilerToolOptionsHelper.kt index b7e2f6fcfb0..277c2212369 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCommonCompilerToolOptionsHelper.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCommonCompilerToolOptionsHelper.kt @@ -24,4 +24,14 @@ internal object KotlinCommonCompilerToolOptionsHelper { args.suppressWarnings = false args.verbose = false } + + internal fun syncOptionsAsConvention( + from: org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerToolOptions, + into: org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerToolOptions, + ) { + into.allWarningsAsErrors.convention(from.allWarningsAsErrors) + into.suppressWarnings.convention(from.suppressWarnings) + into.verbose.convention(from.verbose) + into.freeCompilerArgs.convention(from.freeCompilerArgs) + } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJsCompilerOptionsHelper.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJsCompilerOptionsHelper.kt index 328d81f0dc3..460cb513ba1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJsCompilerOptionsHelper.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJsCompilerOptionsHelper.kt @@ -47,4 +47,25 @@ internal object KotlinJsCompilerOptionsHelper { args.typedArrays = true args.useEsClasses = false } + + internal fun syncOptionsAsConvention( + from: org.jetbrains.kotlin.gradle.dsl.KotlinJsCompilerOptions, + into: org.jetbrains.kotlin.gradle.dsl.KotlinJsCompilerOptions, + ) { + org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptionsHelper.syncOptionsAsConvention(from, into) + into.friendModulesDisabled.convention(from.friendModulesDisabled) + into.main.convention(from.main) + into.metaInfo.convention(from.metaInfo) + into.moduleKind.convention(from.moduleKind) + into.moduleName.convention(from.moduleName) + into.noStdlib.convention(from.noStdlib) + into.outputFile.convention(from.outputFile) + into.sourceMap.convention(from.sourceMap) + into.sourceMapEmbedSources.convention(from.sourceMapEmbedSources) + into.sourceMapNamesPolicy.convention(from.sourceMapNamesPolicy) + into.sourceMapPrefix.convention(from.sourceMapPrefix) + into.target.convention(from.target) + into.typedArrays.convention(from.typedArrays) + into.useEsClasses.convention(from.useEsClasses) + } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJsDceCompilerToolOptionsHelper.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJsDceCompilerToolOptionsHelper.kt index 03d4b5cab03..dc364fb38df 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJsDceCompilerToolOptionsHelper.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJsDceCompilerToolOptionsHelper.kt @@ -23,4 +23,13 @@ internal object KotlinJsDceCompilerToolOptionsHelper { args.devMode = false args.outputDirectory = null } + + internal fun syncOptionsAsConvention( + from: org.jetbrains.kotlin.gradle.dsl.KotlinJsDceCompilerToolOptions, + into: org.jetbrains.kotlin.gradle.dsl.KotlinJsDceCompilerToolOptions, + ) { + org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerToolOptionsHelper.syncOptionsAsConvention(from, into) + into.devMode.convention(from.devMode) + into.outputDirectory.convention(from.outputDirectory) + } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmCompilerOptionsHelper.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmCompilerOptionsHelper.kt index 1b81179ea95..86bed83ed4d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmCompilerOptionsHelper.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinJvmCompilerOptionsHelper.kt @@ -35,4 +35,15 @@ internal object KotlinJvmCompilerOptionsHelper { args.noStdlib = true args.noReflect = true } + + internal fun syncOptionsAsConvention( + from: org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptions, + into: org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptions, + ) { + org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptionsHelper.syncOptionsAsConvention(from, into) + into.javaParameters.convention(from.javaParameters) + into.jvmTarget.convention(from.jvmTarget) + into.moduleName.convention(from.moduleName) + into.noJdk.convention(from.noJdk) + } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformCommonCompilerOptionsHelper.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformCommonCompilerOptionsHelper.kt index e79baa94588..14f96610959 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformCommonCompilerOptionsHelper.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformCommonCompilerOptionsHelper.kt @@ -19,4 +19,11 @@ internal object KotlinMultiplatformCommonCompilerOptionsHelper { ) { org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptionsHelper.fillDefaultValues(args) } + + internal fun syncOptionsAsConvention( + from: org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformCommonCompilerOptions, + into: org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformCommonCompilerOptions, + ) { + org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptionsHelper.syncOptionsAsConvention(from, into) + } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinNativeCompilerOptionsHelper.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinNativeCompilerOptionsHelper.kt index 9bd1bfe2939..dca8c5114a6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinNativeCompilerOptionsHelper.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinNativeCompilerOptionsHelper.kt @@ -21,4 +21,12 @@ internal object KotlinNativeCompilerOptionsHelper { org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptionsHelper.fillDefaultValues(args) args.moduleName = null } + + internal fun syncOptionsAsConvention( + from: org.jetbrains.kotlin.gradle.dsl.KotlinNativeCompilerOptions, + into: org.jetbrains.kotlin.gradle.dsl.KotlinNativeCompilerOptions, + ) { + org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptionsHelper.syncOptionsAsConvention(from, into) + into.moduleName.convention(from.moduleName) + } }