Introduce Kotlin compiler options with Gradle Properties API types

Old one is deprecated and delegates to new options. All new options
are marked with task input types, so they could be used as `@Nested`
input.

Generated options are using specific types in generated
compiler options. This should simplify code completion and provide
meaningful hints to user.

At this point repository compilation will fail.

^KT-27301 In Progress
This commit is contained in:
Yahor Berdnikau
2022-07-22 16:57:44 +02:00
parent 28dd3d4e71
commit 286d0d56af
47 changed files with 1453 additions and 742 deletions
@@ -0,0 +1,34 @@
// DO NOT EDIT MANUALLY!
// Generated by org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt
// To regenerate run 'generateGradleOptions' task
@file:Suppress("RemoveRedundantQualifierName", "Deprecation", "DuplicatedCode")
package org.jetbrains.kotlin.gradle.dsl
interface CompilerCommonOptions : org.jetbrains.kotlin.gradle.dsl.CompilerCommonToolOptions {
/**
* Allow using declarations only from the specified version of bundled libraries
* Possible values: "1.3 (deprecated)", "1.4 (deprecated)", "1.5", "1.6", "1.7", "1.8", "1.9 (experimental)"
* Default value: null
*/
@get:org.gradle.api.tasks.Optional
@get:org.gradle.api.tasks.Input
val apiVersion: org.gradle.api.provider.Property<org.jetbrains.kotlin.gradle.dsl.KotlinVersion>
/**
* Provide source compatibility with the specified version of Kotlin
* Possible values: "1.3 (deprecated)", "1.4 (deprecated)", "1.5", "1.6", "1.7", "1.8", "1.9 (experimental)"
* Default value: null
*/
@get:org.gradle.api.tasks.Optional
@get:org.gradle.api.tasks.Input
val languageVersion: org.gradle.api.provider.Property<org.jetbrains.kotlin.gradle.dsl.KotlinVersion>
/**
* Compile using experimental K2. K2 is a new compiler pipeline, no compatibility guarantees are yet provided
* Default value: false
*/
@get:org.gradle.api.tasks.Input
val useK2: org.gradle.api.provider.Property<kotlin.Boolean>
}
@@ -0,0 +1,37 @@
// DO NOT EDIT MANUALLY!
// Generated by org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt
// To regenerate run 'generateGradleOptions' task
@file:Suppress("RemoveRedundantQualifierName", "Deprecation", "DuplicatedCode")
package org.jetbrains.kotlin.gradle.dsl
interface CompilerCommonToolOptions {
/**
* Report an error if there are any warnings
* Default value: false
*/
@get:org.gradle.api.tasks.Input
val allWarningsAsErrors: org.gradle.api.provider.Property<kotlin.Boolean>
/**
* Generate no warnings
* Default value: false
*/
@get:org.gradle.api.tasks.Internal
val suppressWarnings: org.gradle.api.provider.Property<kotlin.Boolean>
/**
* Enable verbose logging output
* Default value: false
*/
@get:org.gradle.api.tasks.Internal
val verbose: org.gradle.api.provider.Property<kotlin.Boolean>
/**
* A list of additional compiler arguments
* Default value: emptyList<String>()
*/
@get:org.gradle.api.tasks.Input
val freeCompilerArgs: org.gradle.api.provider.ListProperty<kotlin.String>
}
@@ -0,0 +1,24 @@
// DO NOT EDIT MANUALLY!
// Generated by org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt
// To regenerate run 'generateGradleOptions' task
@file:Suppress("RemoveRedundantQualifierName", "Deprecation", "DuplicatedCode")
package org.jetbrains.kotlin.gradle.dsl
interface CompilerJsDceOptions : org.jetbrains.kotlin.gradle.dsl.CompilerCommonToolOptions {
/**
* Development mode: don't strip out any code, just copy dependencies
* Default value: false
*/
@get:org.gradle.api.tasks.Input
val devMode: org.gradle.api.provider.Property<kotlin.Boolean>
/**
* Output directory
* Default value: null
*/
@Deprecated(message = "Use task 'destinationDirectory' to configure output directory", level = DeprecationLevel.WARNING)
@get:org.gradle.api.tasks.Internal
val outputDirectory: org.gradle.api.provider.Property<kotlin.String>
}
@@ -0,0 +1,93 @@
// DO NOT EDIT MANUALLY!
// Generated by org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt
// To regenerate run 'generateGradleOptions' task
@file:Suppress("RemoveRedundantQualifierName", "Deprecation", "DuplicatedCode")
package org.jetbrains.kotlin.gradle.dsl
interface CompilerJsOptions : org.jetbrains.kotlin.gradle.dsl.CompilerCommonOptions {
/**
* Disable internal declaration export
* Default value: false
*/
@get:org.gradle.api.tasks.Input
val friendModulesDisabled: org.gradle.api.provider.Property<kotlin.Boolean>
/**
* Define whether the `main` function should be called upon execution
* Possible values: "call", "noCall"
* Default value: org.jetbrains.kotlin.gradle.dsl.JsMainFunctionExecutionMode.CALL
*/
@get:org.gradle.api.tasks.Input
val main: org.gradle.api.provider.Property<org.jetbrains.kotlin.gradle.dsl.JsMainFunctionExecutionMode>
/**
* Generate .meta.js and .kjsm files with metadata. Use to create a library
* Default value: true
*/
@get:org.gradle.api.tasks.Input
val metaInfo: org.gradle.api.provider.Property<kotlin.Boolean>
/**
* Kind of the JS module generated by the compiler
* Possible values: "plain", "amd", "commonjs", "umd"
* Default value: org.jetbrains.kotlin.gradle.dsl.JsModuleKind.MODULE_PLAIN
*/
@get:org.gradle.api.tasks.Input
val moduleKind: org.gradle.api.provider.Property<org.jetbrains.kotlin.gradle.dsl.JsModuleKind>
/**
* Don't automatically include the default Kotlin/JS stdlib into compilation dependencies
* Default value: true
*/
@get:org.gradle.api.tasks.Input
val noStdlib: org.gradle.api.provider.Property<kotlin.Boolean>
/**
* Destination *.js file for the compilation result
* Default value: null
*/
@Deprecated(message = "Use task 'outputFileProperty' to specify location", level = DeprecationLevel.WARNING)
@get:org.gradle.api.tasks.Internal
val outputFile: org.gradle.api.provider.Property<kotlin.String>
/**
* Generate source map
* Default value: false
*/
@get:org.gradle.api.tasks.Input
val sourceMap: org.gradle.api.provider.Property<kotlin.Boolean>
/**
* Embed source files into source map
* Possible values: "never", "always", "inlining"
* Default value: null
*/
@get:org.gradle.api.tasks.Optional
@get:org.gradle.api.tasks.Input
val sourceMapEmbedSources: org.gradle.api.provider.Property<org.jetbrains.kotlin.gradle.dsl.JsSourceMapEmbedMode>
/**
* Add the specified prefix to paths in the source map
* Default value: null
*/
@get:org.gradle.api.tasks.Optional
@get:org.gradle.api.tasks.Input
val sourceMapPrefix: org.gradle.api.provider.Property<kotlin.String>
/**
* Generate JS files for specific ECMA version
* Possible values: "v5"
* Default value: "v5"
*/
@get:org.gradle.api.tasks.Input
val target: org.gradle.api.provider.Property<kotlin.String>
/**
* Translate primitive arrays to JS typed arrays
* Default value: true
*/
@get:org.gradle.api.tasks.Input
val typedArrays: org.gradle.api.provider.Property<kotlin.Boolean>
}
@@ -0,0 +1,40 @@
// DO NOT EDIT MANUALLY!
// Generated by org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt
// To regenerate run 'generateGradleOptions' task
@file:Suppress("RemoveRedundantQualifierName", "Deprecation", "DuplicatedCode")
package org.jetbrains.kotlin.gradle.dsl
interface CompilerJvmOptions : org.jetbrains.kotlin.gradle.dsl.CompilerCommonOptions {
/**
* Generate metadata for Java 1.8 reflection on method parameters
* Default value: false
*/
@get:org.gradle.api.tasks.Input
val javaParameters: org.gradle.api.provider.Property<kotlin.Boolean>
/**
* Target version of the generated JVM bytecode (1.8, 9, 10, ..., 18), default is 1.8
* Possible values: "1.8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18"
* Default value: null
*/
@get:org.gradle.api.tasks.Optional
@get:org.gradle.api.tasks.Input
val jvmTarget: org.gradle.api.provider.Property<org.jetbrains.kotlin.gradle.dsl.JvmTarget>
/**
* Name of the generated .kotlin_module file
* Default value: null
*/
@get:org.gradle.api.tasks.Optional
@get:org.gradle.api.tasks.Input
val moduleName: org.gradle.api.provider.Property<kotlin.String>
/**
* Don't automatically include the Java runtime into the classpath
* Default value: false
*/
@get:org.gradle.api.tasks.Input
val noJdk: org.gradle.api.provider.Property<kotlin.Boolean>
}
@@ -0,0 +1,9 @@
// DO NOT EDIT MANUALLY!
// Generated by org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt
// To regenerate run 'generateGradleOptions' task
@file:Suppress("RemoveRedundantQualifierName", "Deprecation", "DuplicatedCode")
package org.jetbrains.kotlin.gradle.dsl
interface CompilerMultiplatformCommonOptions : org.jetbrains.kotlin.gradle.dsl.CompilerCommonOptions {
}
@@ -1,27 +1,45 @@
// DO NOT EDIT MANUALLY!
// Generated by org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt
// To regenerate run 'generateGradleOptions' task
@file:Suppress("RemoveRedundantQualifierName", "Deprecation", "DuplicatedCode")
package org.jetbrains.kotlin.gradle.dsl
@Suppress("DEPRECATION")
interface KotlinCommonOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonToolOptions {
@Deprecated("Use CompilerCommonOptions instead", level = DeprecationLevel.WARNING)
interface KotlinCommonOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonToolOptions {
override val options: org.jetbrains.kotlin.gradle.dsl.CompilerCommonOptions
private val kotlin.String?.apiVersionCompilerOption get() = if (this != null) org.jetbrains.kotlin.gradle.dsl.KotlinVersion.fromVersion(this) else null
private val org.jetbrains.kotlin.gradle.dsl.KotlinVersion?.apiVersionKotlinOption get() = this?.version
/**
* Allow using declarations only from the specified version of bundled libraries
* Possible values: "1.3 (deprecated)", "1.4 (deprecated)", "1.5", "1.6", "1.7", "1.8", "1.9 (experimental)"
* Default value: null
*/
var apiVersion: kotlin.String?
var apiVersion: kotlin.String?
get() = options.apiVersion.orNull.apiVersionKotlinOption
set(value) = options.apiVersion.set(value.apiVersionCompilerOption)
private val kotlin.String?.languageVersionCompilerOption get() = if (this != null) org.jetbrains.kotlin.gradle.dsl.KotlinVersion.fromVersion(this) else null
private val org.jetbrains.kotlin.gradle.dsl.KotlinVersion?.languageVersionKotlinOption get() = this?.version
/**
* Provide source compatibility with the specified version of Kotlin
* Possible values: "1.3 (deprecated)", "1.4 (deprecated)", "1.5", "1.6", "1.7", "1.8", "1.9 (experimental)"
* Default value: null
*/
var languageVersion: kotlin.String?
var languageVersion: kotlin.String?
get() = options.languageVersion.orNull.languageVersionKotlinOption
set(value) = options.languageVersion.set(value.languageVersionCompilerOption)
/**
* Compile using experimental K2. K2 is a new compiler pipeline, no compatibility guarantees are yet provided
* Default value: false
*/
var useK2: kotlin.Boolean
var useK2: kotlin.Boolean
get() = options.useK2.get()
set(value) = options.useK2.set(value)
}
@@ -1,31 +1,43 @@
// DO NOT EDIT MANUALLY!
// Generated by org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt
// To regenerate run 'generateGradleOptions' task
@file:Suppress("RemoveRedundantQualifierName", "Deprecation", "DuplicatedCode")
package org.jetbrains.kotlin.gradle.dsl
@Suppress("DEPRECATION")
@Deprecated("Use CompilerCommonToolOptions instead", level = DeprecationLevel.WARNING)
interface KotlinCommonToolOptions {
val options: org.jetbrains.kotlin.gradle.dsl.CompilerCommonToolOptions
/**
* Report an error if there are any warnings
* Default value: false
*/
var allWarningsAsErrors: kotlin.Boolean
var allWarningsAsErrors: kotlin.Boolean
get() = options.allWarningsAsErrors.get()
set(value) = options.allWarningsAsErrors.set(value)
/**
* Generate no warnings
* Default value: false
*/
var suppressWarnings: kotlin.Boolean
var suppressWarnings: kotlin.Boolean
get() = options.suppressWarnings.get()
set(value) = options.suppressWarnings.set(value)
/**
* Enable verbose logging output
* Default value: false
*/
var verbose: kotlin.Boolean
var verbose: kotlin.Boolean
get() = options.verbose.get()
set(value) = options.verbose.set(value)
/**
* A list of additional compiler arguments
* Default value: emptyList()
* Default value: emptyList<String>()
*/
var freeCompilerArgs: kotlin.collections.List<kotlin.String>
var freeCompilerArgs: kotlin.collections.List<kotlin.String>
get() = options.freeCompilerArgs.get()
set(value) = options.freeCompilerArgs.set(value)
}
@@ -1,19 +1,28 @@
// DO NOT EDIT MANUALLY!
// Generated by org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt
// To regenerate run 'generateGradleOptions' task
@file:Suppress("RemoveRedundantQualifierName", "Deprecation", "DuplicatedCode")
package org.jetbrains.kotlin.gradle.dsl
@Suppress("DEPRECATION")
interface KotlinJsDceOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonToolOptions {
@Deprecated("Use CompilerJsDceOptions instead", level = DeprecationLevel.WARNING)
interface KotlinJsDceOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonToolOptions {
override val options: org.jetbrains.kotlin.gradle.dsl.CompilerJsDceOptions
/**
* Development mode: don't strip out any code, just copy dependencies
* Default value: false
*/
var devMode: kotlin.Boolean
var devMode: kotlin.Boolean
get() = options.devMode.get()
set(value) = options.devMode.set(value)
/**
* Output directory
* Default value: null
*/
var outputDirectory: kotlin.String?
@Deprecated(message = "Use task 'destinationDirectory' to configure output directory", level = DeprecationLevel.WARNING)
var outputDirectory: kotlin.String?
get() = options.outputDirectory.orNull
set(value) = options.outputDirectory.set(value)
}
@@ -1,77 +1,116 @@
// DO NOT EDIT MANUALLY!
// Generated by org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt
// To regenerate run 'generateGradleOptions' task
@file:Suppress("RemoveRedundantQualifierName", "Deprecation", "DuplicatedCode")
package org.jetbrains.kotlin.gradle.dsl
@Suppress("DEPRECATION")
interface KotlinJsOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions {
@Deprecated("Use CompilerJsOptions instead", level = DeprecationLevel.WARNING)
interface KotlinJsOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions {
override val options: org.jetbrains.kotlin.gradle.dsl.CompilerJsOptions
/**
* Disable internal declaration export
* Default value: false
*/
var friendModulesDisabled: kotlin.Boolean
var friendModulesDisabled: kotlin.Boolean
get() = options.friendModulesDisabled.get()
set(value) = options.friendModulesDisabled.set(value)
private val kotlin.String.mainCompilerOption get() = org.jetbrains.kotlin.gradle.dsl.JsMainFunctionExecutionMode.fromMode(this)
private val org.jetbrains.kotlin.gradle.dsl.JsMainFunctionExecutionMode.mainKotlinOption get() = this.mode
/**
* Define whether the `main` function should be called upon execution
* Possible values: "call", "noCall"
* Default value: "call"
* Default value: org.jetbrains.kotlin.gradle.dsl.JsMainFunctionExecutionMode.CALL
*/
var main: kotlin.String
var main: kotlin.String
get() = options.main.get().mainKotlinOption
set(value) = options.main.set(value.mainCompilerOption)
/**
* Generate .meta.js and .kjsm files with metadata. Use to create a library
* Default value: true
*/
var metaInfo: kotlin.Boolean
var metaInfo: kotlin.Boolean
get() = options.metaInfo.get()
set(value) = options.metaInfo.set(value)
private val kotlin.String.moduleKindCompilerOption get() = org.jetbrains.kotlin.gradle.dsl.JsModuleKind.fromKind(this)
private val org.jetbrains.kotlin.gradle.dsl.JsModuleKind.moduleKindKotlinOption get() = this.kind
/**
* Kind of the JS module generated by the compiler
* Possible values: "plain", "amd", "commonjs", "umd"
* Default value: "plain"
* Default value: org.jetbrains.kotlin.gradle.dsl.JsModuleKind.MODULE_PLAIN
*/
var moduleKind: kotlin.String
var moduleKind: kotlin.String
get() = options.moduleKind.get().moduleKindKotlinOption
set(value) = options.moduleKind.set(value.moduleKindCompilerOption)
/**
* Don't automatically include the default Kotlin/JS stdlib into compilation dependencies
* Default value: true
*/
var noStdlib: kotlin.Boolean
var noStdlib: kotlin.Boolean
get() = options.noStdlib.get()
set(value) = options.noStdlib.set(value)
/**
* Destination *.js file for the compilation result
* Default value: null
*/
var outputFile: kotlin.String?
@Deprecated(message = "Use task 'outputFileProperty' to specify location", level = DeprecationLevel.WARNING)
var outputFile: kotlin.String?
get() = options.outputFile.orNull
set(value) = options.outputFile.set(value)
/**
* Generate source map
* Default value: false
*/
var sourceMap: kotlin.Boolean
var sourceMap: kotlin.Boolean
get() = options.sourceMap.get()
set(value) = options.sourceMap.set(value)
private val kotlin.String?.sourceMapEmbedSourcesCompilerOption get() = this?.let { org.jetbrains.kotlin.gradle.dsl.JsSourceMapEmbedMode.fromMode(it) }
private val org.jetbrains.kotlin.gradle.dsl.JsSourceMapEmbedMode?.sourceMapEmbedSourcesKotlinOption get() = this?.mode
/**
* Embed source files into source map
* Possible values: "never", "always", "inlining"
* Default value: null
*/
var sourceMapEmbedSources: kotlin.String?
var sourceMapEmbedSources: kotlin.String?
get() = options.sourceMapEmbedSources.orNull.sourceMapEmbedSourcesKotlinOption
set(value) = options.sourceMapEmbedSources.set(value.sourceMapEmbedSourcesCompilerOption)
/**
* Add the specified prefix to paths in the source map
* Default value: null
*/
var sourceMapPrefix: kotlin.String?
var sourceMapPrefix: kotlin.String?
get() = options.sourceMapPrefix.orNull
set(value) = options.sourceMapPrefix.set(value)
/**
* Generate JS files for specific ECMA version
* Possible values: "v5"
* Default value: "v5"
*/
var target: kotlin.String
var target: kotlin.String
get() = options.target.get()
set(value) = options.target.set(value)
/**
* Translate primitive arrays to JS typed arrays
* Default value: true
*/
var typedArrays: kotlin.Boolean
var typedArrays: kotlin.Boolean
get() = options.typedArrays.get()
set(value) = options.typedArrays.set(value)
}
@@ -1,32 +1,48 @@
// DO NOT EDIT MANUALLY!
// Generated by org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt
// To regenerate run 'generateGradleOptions' task
@file:Suppress("RemoveRedundantQualifierName", "Deprecation", "DuplicatedCode")
package org.jetbrains.kotlin.gradle.dsl
@Suppress("DEPRECATION")
interface KotlinJvmOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions {
@Deprecated("Use CompilerJvmOptions instead", level = DeprecationLevel.WARNING)
interface KotlinJvmOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions {
override val options: org.jetbrains.kotlin.gradle.dsl.CompilerJvmOptions
/**
* Generate metadata for Java 1.8 reflection on method parameters
* Default value: false
*/
var javaParameters: kotlin.Boolean
var javaParameters: kotlin.Boolean
get() = options.javaParameters.get()
set(value) = options.javaParameters.set(value)
private val kotlin.String?.jvmTargetCompilerOption get() = if (this != null) org.jetbrains.kotlin.gradle.dsl.JvmTarget.fromTarget(this) else null
private val org.jetbrains.kotlin.gradle.dsl.JvmTarget?.jvmTargetKotlinOption get() = this?.target
/**
* Target version of the generated JVM bytecode (1.8, 9, 10, ..., 18), default is 1.8
* Possible values: "1.8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18"
* Default value: null
*/
var jvmTarget: kotlin.String?
var jvmTarget: kotlin.String?
get() = options.jvmTarget.orNull.jvmTargetKotlinOption
set(value) = options.jvmTarget.set(value.jvmTargetCompilerOption)
/**
* Name of the generated .kotlin_module file
* Default value: null
*/
var moduleName: kotlin.String?
var moduleName: kotlin.String?
get() = options.moduleName.orNull
set(value) = options.moduleName.set(value)
/**
* Don't automatically include the Java runtime into the classpath
* Default value: false
*/
var noJdk: kotlin.Boolean
var noJdk: kotlin.Boolean
get() = options.noJdk.get()
set(value) = options.noJdk.set(value)
}
@@ -0,0 +1,11 @@
// DO NOT EDIT MANUALLY!
// Generated by org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt
// To regenerate run 'generateGradleOptions' task
@file:Suppress("RemoveRedundantQualifierName", "Deprecation", "DuplicatedCode")
package org.jetbrains.kotlin.gradle.dsl
@Deprecated("Use CompilerMultiplatformCommonOptions instead", level = DeprecationLevel.WARNING)
interface KotlinMultiplatformCommonOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions {
override val options: org.jetbrains.kotlin.gradle.dsl.CompilerMultiplatformCommonOptions
}