Improve generated code for Gradle properties

Fix warnings about double nullability and useless elvis.
This commit is contained in:
Alexander Udalov
2021-02-19 17:49:15 +01:00
committed by TeamCityServer
parent ccc27b6a0c
commit e5128a8772
5 changed files with 41 additions and 96 deletions
@@ -198,15 +198,19 @@ private fun Printer.generateImpl(
for (property in properties) {
println()
val backingField = property.backingField()
val backingFieldType = property.gradleReturnType + "?"
println("private var $backingField: $backingFieldType = null")
generatePropertyDeclaration(property, modifiers = "override")
withIndent {
println("get() = $backingField ?: ${property.gradleDefaultValue}")
println("set(value) {")
withIndent { println("$backingField = value") }
println("}")
val propertyType = property.gradleReturnType
if (propertyType.endsWith("?")) {
generatePropertyDeclaration(property, modifiers = "override", value = "null")
} else {
val backingField = property.backingField()
println("private var $backingField: $propertyType? = null")
generatePropertyDeclaration(property, modifiers = "override")
withIndent {
println("get() = $backingField ?: ${property.gradleDefaultValue}")
println("set(value) {")
withIndent { println("$backingField = value") }
println("}")
}
}
}
@@ -214,7 +218,7 @@ private fun Printer.generateImpl(
println("internal open fun updateArguments(args: $argsType) {")
withIndent {
for (property in properties) {
val backingField = property.backingField()
val backingField = if (property.gradleReturnType.endsWith("?")) property.name else property.backingField()
println("$backingField?.let { args.${property.name} = it }")
}
}
@@ -252,9 +256,10 @@ private fun Printer.generateDeclaration(
println("}")
}
private fun Printer.generatePropertyDeclaration(property: KProperty1<*, *>, modifiers: String = "") {
private fun Printer.generatePropertyDeclaration(property: KProperty1<*, *>, modifiers: String = "", value: String? = null) {
val returnType = property.gradleReturnType
println("$modifiers var ${property.name}: $returnType")
val initialValue = if (value != null) " = $value" else ""
println("$modifiers var ${property.name}: $returnType$initialValue")
}
private fun Printer.generateOptionDeprecation(property: KProperty1<*, *>) {
@@ -32,19 +32,14 @@ internal abstract class KotlinJsDceOptionsBase : org.jetbrains.kotlin.gradle.dsl
devModeField = value
}
private var outputDirectoryField: kotlin.String?? = null
override var outputDirectory: kotlin.String?
get() = outputDirectoryField ?: null
set(value) {
outputDirectoryField = value
}
override var outputDirectory: kotlin.String? = null
internal open fun updateArguments(args: org.jetbrains.kotlin.cli.common.arguments.K2JSDceArguments) {
allWarningsAsErrorsField?.let { args.allWarningsAsErrors = it }
suppressWarningsField?.let { args.suppressWarnings = it }
verboseField?.let { args.verbose = it }
devModeField?.let { args.devMode = it }
outputDirectoryField?.let { args.outputDirectory = it }
outputDirectory?.let { args.outputDirectory = it }
}
}
@@ -25,19 +25,9 @@ internal abstract class KotlinJsOptionsBase : org.jetbrains.kotlin.gradle.dsl.Ko
verboseField = value
}
private var apiVersionField: kotlin.String?? = null
override var apiVersion: kotlin.String?
get() = apiVersionField ?: null
set(value) {
apiVersionField = value
}
override var apiVersion: kotlin.String? = null
private var languageVersionField: kotlin.String?? = null
override var languageVersion: kotlin.String?
get() = languageVersionField ?: null
set(value) {
languageVersionField = value
}
override var languageVersion: kotlin.String? = null
private var useFirField: kotlin.Boolean? = null
override var useFir: kotlin.Boolean
@@ -81,12 +71,7 @@ internal abstract class KotlinJsOptionsBase : org.jetbrains.kotlin.gradle.dsl.Ko
noStdlibField = value
}
private var outputFileField: kotlin.String?? = null
override var outputFile: kotlin.String?
get() = outputFileField ?: null
set(value) {
outputFileField = value
}
override var outputFile: kotlin.String? = null
private var sourceMapField: kotlin.Boolean? = null
override var sourceMap: kotlin.Boolean
@@ -95,19 +80,9 @@ internal abstract class KotlinJsOptionsBase : org.jetbrains.kotlin.gradle.dsl.Ko
sourceMapField = value
}
private var sourceMapEmbedSourcesField: kotlin.String?? = null
override var sourceMapEmbedSources: kotlin.String?
get() = sourceMapEmbedSourcesField ?: null
set(value) {
sourceMapEmbedSourcesField = value
}
override var sourceMapEmbedSources: kotlin.String? = null
private var sourceMapPrefixField: kotlin.String?? = null
override var sourceMapPrefix: kotlin.String?
get() = sourceMapPrefixField ?: null
set(value) {
sourceMapPrefixField = value
}
override var sourceMapPrefix: kotlin.String? = null
private var targetField: kotlin.String? = null
override var target: kotlin.String
@@ -127,18 +102,18 @@ internal abstract class KotlinJsOptionsBase : org.jetbrains.kotlin.gradle.dsl.Ko
allWarningsAsErrorsField?.let { args.allWarningsAsErrors = it }
suppressWarningsField?.let { args.suppressWarnings = it }
verboseField?.let { args.verbose = it }
apiVersionField?.let { args.apiVersion = it }
languageVersionField?.let { args.languageVersion = it }
apiVersion?.let { args.apiVersion = it }
languageVersion?.let { args.languageVersion = it }
useFirField?.let { args.useFir = it }
friendModulesDisabledField?.let { args.friendModulesDisabled = it }
mainField?.let { args.main = it }
metaInfoField?.let { args.metaInfo = it }
moduleKindField?.let { args.moduleKind = it }
noStdlibField?.let { args.noStdlib = it }
outputFileField?.let { args.outputFile = it }
outputFile?.let { args.outputFile = it }
sourceMapField?.let { args.sourceMap = it }
sourceMapEmbedSourcesField?.let { args.sourceMapEmbedSources = it }
sourceMapPrefixField?.let { args.sourceMapPrefix = it }
sourceMapEmbedSources?.let { args.sourceMapEmbedSources = it }
sourceMapPrefix?.let { args.sourceMapPrefix = it }
targetField?.let { args.target = it }
typedArraysField?.let { args.typedArrays = it }
}
@@ -25,19 +25,9 @@ internal abstract class KotlinJvmOptionsBase : org.jetbrains.kotlin.gradle.dsl.K
verboseField = value
}
private var apiVersionField: kotlin.String?? = null
override var apiVersion: kotlin.String?
get() = apiVersionField ?: null
set(value) {
apiVersionField = value
}
override var apiVersion: kotlin.String? = null
private var languageVersionField: kotlin.String?? = null
override var languageVersion: kotlin.String?
get() = languageVersionField ?: null
set(value) {
languageVersionField = value
}
override var languageVersion: kotlin.String? = null
private var useFirField: kotlin.Boolean? = null
override var useFir: kotlin.Boolean
@@ -60,12 +50,7 @@ internal abstract class KotlinJvmOptionsBase : org.jetbrains.kotlin.gradle.dsl.K
javaParametersField = value
}
private var jdkHomeField: kotlin.String?? = null
override var jdkHome: kotlin.String?
get() = jdkHomeField ?: null
set(value) {
jdkHomeField = value
}
override var jdkHome: kotlin.String? = null
private var jvmTargetField: kotlin.String? = null
override var jvmTarget: kotlin.String
@@ -74,12 +59,7 @@ internal abstract class KotlinJvmOptionsBase : org.jetbrains.kotlin.gradle.dsl.K
jvmTargetField = value
}
private var moduleNameField: kotlin.String?? = null
override var moduleName: kotlin.String?
get() = moduleNameField ?: null
set(value) {
moduleNameField = value
}
override var moduleName: kotlin.String? = null
private var noJdkField: kotlin.Boolean? = null
override var noJdk: kotlin.Boolean
@@ -120,14 +100,14 @@ internal abstract class KotlinJvmOptionsBase : org.jetbrains.kotlin.gradle.dsl.K
allWarningsAsErrorsField?.let { args.allWarningsAsErrors = it }
suppressWarningsField?.let { args.suppressWarnings = it }
verboseField?.let { args.verbose = it }
apiVersionField?.let { args.apiVersion = it }
languageVersionField?.let { args.languageVersion = it }
apiVersion?.let { args.apiVersion = it }
languageVersion?.let { args.languageVersion = it }
useFirField?.let { args.useFir = it }
includeRuntimeField?.let { args.includeRuntime = it }
javaParametersField?.let { args.javaParameters = it }
jdkHomeField?.let { args.jdkHome = it }
jdkHome?.let { args.jdkHome = it }
jvmTargetField?.let { args.jvmTarget = it }
moduleNameField?.let { args.moduleName = it }
moduleName?.let { args.moduleName = it }
noJdkField?.let { args.noJdk = it }
noReflectField?.let { args.noReflect = it }
noStdlibField?.let { args.noStdlib = it }
@@ -25,19 +25,9 @@ internal abstract class KotlinMultiplatformCommonOptionsBase : org.jetbrains.kot
verboseField = value
}
private var apiVersionField: kotlin.String?? = null
override var apiVersion: kotlin.String?
get() = apiVersionField ?: null
set(value) {
apiVersionField = value
}
override var apiVersion: kotlin.String? = null
private var languageVersionField: kotlin.String?? = null
override var languageVersion: kotlin.String?
get() = languageVersionField ?: null
set(value) {
languageVersionField = value
}
override var languageVersion: kotlin.String? = null
private var useFirField: kotlin.Boolean? = null
override var useFir: kotlin.Boolean
@@ -50,8 +40,8 @@ internal abstract class KotlinMultiplatformCommonOptionsBase : org.jetbrains.kot
allWarningsAsErrorsField?.let { args.allWarningsAsErrors = it }
suppressWarningsField?.let { args.suppressWarnings = it }
verboseField?.let { args.verbose = it }
apiVersionField?.let { args.apiVersion = it }
languageVersionField?.let { args.languageVersion = it }
apiVersion?.let { args.apiVersion = it }
languageVersion?.let { args.languageVersion = it }
useFirField?.let { args.useFir = it }
}
}