Configuration: Collapse empty nullable strings to null
This commit is contained in:
+6
-6
@@ -44,7 +44,7 @@ abstract class CommonCompilerArguments : CommonToolArguments() {
|
||||
valueDescription = "<version>",
|
||||
description = "Provide source compatibility with specified language version"
|
||||
)
|
||||
var languageVersion: String? by FreezableVar(null)
|
||||
var languageVersion: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@get:Transient
|
||||
var autoAdvanceApiVersion: Boolean by FreezableVar(true)
|
||||
@@ -55,14 +55,14 @@ abstract class CommonCompilerArguments : CommonToolArguments() {
|
||||
valueDescription = "<version>",
|
||||
description = "Allow to use declarations only from the specified version of bundled libraries"
|
||||
)
|
||||
var apiVersion: String? by FreezableVar(null)
|
||||
var apiVersion: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@Argument(
|
||||
value = "-kotlin-home",
|
||||
valueDescription = "<path>",
|
||||
description = "Path to Kotlin compiler home directory, used for runtime libraries discovery"
|
||||
)
|
||||
var kotlinHome: String? by FreezableVar(null)
|
||||
var kotlinHome: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@Argument(value = "-P", valueDescription = PLUGIN_OPTION_FORMAT, description = "Pass an option to a plugin")
|
||||
var pluginOptions: Array<String>? by FreezableVar(null)
|
||||
@@ -101,14 +101,14 @@ abstract class CommonCompilerArguments : CommonToolArguments() {
|
||||
valueDescription = "<path>",
|
||||
description = "Path to the kotlin-compiler.jar or directory where IntelliJ configuration files can be found"
|
||||
)
|
||||
var intellijPluginRoot: String? by FreezableVar(null)
|
||||
var intellijPluginRoot: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@Argument(
|
||||
value = "-Xcoroutines",
|
||||
valueDescription = "{enable|warn|error}",
|
||||
description = "Enable coroutines or report warnings or errors on declarations and use sites of 'suspend' modifier"
|
||||
)
|
||||
var coroutinesState: String? by FreezableVar(WARN)
|
||||
var coroutinesState: String? by NullableStringFreezableVar(WARN)
|
||||
|
||||
@Argument(
|
||||
value = "-Xnew-inference",
|
||||
@@ -162,7 +162,7 @@ abstract class CommonCompilerArguments : CommonToolArguments() {
|
||||
valueDescription = "<path>",
|
||||
description = "Dump detailed performance statistics to the specified file"
|
||||
)
|
||||
var dumpPerf: String? by FreezableVar(null)
|
||||
var dumpPerf: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@Argument(
|
||||
value = "-Xprogressive",
|
||||
|
||||
@@ -20,7 +20,7 @@ import kotlin.properties.ReadWriteProperty
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
abstract class Freezable {
|
||||
protected inner class FreezableVar<T>(private var value: T) : ReadWriteProperty<Any, T> {
|
||||
protected open inner class FreezableVar<T>(private var value: T) : ReadWriteProperty<Any, T> {
|
||||
override fun getValue(thisRef: Any, property: KProperty<*>) = value
|
||||
|
||||
override fun setValue(thisRef: Any, property: KProperty<*>, value: T) {
|
||||
@@ -29,6 +29,14 @@ abstract class Freezable {
|
||||
}
|
||||
}
|
||||
|
||||
protected inner class NullableStringFreezableVar(value: String?) : FreezableVar<String?>(value) {
|
||||
private val defaultValue = value
|
||||
|
||||
override fun setValue(thisRef: Any, property: KProperty<*>, value: String?) {
|
||||
super.setValue(thisRef, property, if (value.isNullOrEmpty()) defaultValue else value)
|
||||
}
|
||||
}
|
||||
|
||||
private var frozen: Boolean = false
|
||||
|
||||
private fun getInstanceWithFreezeStatus(value: Boolean) = if (value == frozen) this else copyBean(this).apply { frozen = value }
|
||||
|
||||
+11
-11
@@ -26,7 +26,7 @@ class K2JSCompilerArguments : CommonCompilerArguments() {
|
||||
|
||||
@GradleOption(DefaultValues.StringNullDefault::class)
|
||||
@Argument(value = "-output", valueDescription = "<path>", description = "Output file path")
|
||||
var outputFile: String? by FreezableVar(null)
|
||||
var outputFile: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@GradleOption(DefaultValues.BooleanTrueDefault::class)
|
||||
@Argument(value = "-no-stdlib", description = "Don't use bundled Kotlin stdlib")
|
||||
@@ -37,7 +37,7 @@ class K2JSCompilerArguments : CommonCompilerArguments() {
|
||||
valueDescription = "<path>",
|
||||
description = "Paths to Kotlin libraries with .meta.js and .kjsm files, separated by system path separator"
|
||||
)
|
||||
var libraries: String? by FreezableVar(null)
|
||||
var libraries: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@GradleOption(DefaultValues.BooleanFalseDefault::class)
|
||||
@Argument(value = "-source-map", description = "Generate source map")
|
||||
@@ -45,7 +45,7 @@ class K2JSCompilerArguments : CommonCompilerArguments() {
|
||||
|
||||
@GradleOption(DefaultValues.StringNullDefault::class)
|
||||
@Argument(value = "-source-map-prefix", description = "Prefix for paths in a source map")
|
||||
var sourceMapPrefix: String? by FreezableVar(null)
|
||||
var sourceMapPrefix: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@Argument(
|
||||
value = "-source-map-base-dirs",
|
||||
@@ -53,7 +53,7 @@ class K2JSCompilerArguments : CommonCompilerArguments() {
|
||||
valueDescription = "<path>",
|
||||
description = "Base directories which are used to calculate relative paths to source files in source map"
|
||||
)
|
||||
var sourceMapBaseDirs: String? by FreezableVar(null)
|
||||
var sourceMapBaseDirs: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@GradleOption(DefaultValues.JsSourceMapContentModes::class)
|
||||
@Argument(
|
||||
@@ -61,7 +61,7 @@ class K2JSCompilerArguments : CommonCompilerArguments() {
|
||||
valueDescription = "{ always, never, inlining }",
|
||||
description = "Embed source files into source map"
|
||||
)
|
||||
var sourceMapEmbedSources: String? by FreezableVar(null)
|
||||
var sourceMapEmbedSources: String? by NullableStringFreezableVar(K2JsArgumentConstants.SOURCE_MAP_SOURCE_CONTENT_INLINING)
|
||||
|
||||
@GradleOption(DefaultValues.BooleanTrueDefault::class)
|
||||
@Argument(value = "-meta-info", description = "Generate .meta.js and .kjsm files with metadata. Use to create a library")
|
||||
@@ -69,7 +69,7 @@ class K2JSCompilerArguments : CommonCompilerArguments() {
|
||||
|
||||
@GradleOption(DefaultValues.JsEcmaVersions::class)
|
||||
@Argument(value = "-target", valueDescription = "{ v5 }", description = "Generate JS files for specific ECMA version")
|
||||
var target: String? by FreezableVar(null)
|
||||
var target: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@GradleOption(DefaultValues.JsModuleKinds::class)
|
||||
@Argument(
|
||||
@@ -77,25 +77,25 @@ class K2JSCompilerArguments : CommonCompilerArguments() {
|
||||
valueDescription = "{ plain, amd, commonjs, umd }",
|
||||
description = "Kind of a module generated by compiler"
|
||||
)
|
||||
var moduleKind: String? by FreezableVar(K2JsArgumentConstants.MODULE_PLAIN)
|
||||
var moduleKind: String? by NullableStringFreezableVar(K2JsArgumentConstants.MODULE_PLAIN)
|
||||
|
||||
@GradleOption(DefaultValues.JsMain::class)
|
||||
@Argument(value = "-main", valueDescription = "{$CALL,$NO_CALL}", description = "Whether a main function should be called")
|
||||
var main: String? by FreezableVar(null)
|
||||
var main: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@Argument(
|
||||
value = "-output-prefix",
|
||||
valueDescription = "<path>",
|
||||
description = "Path to file which will be added to the beginning of output file"
|
||||
)
|
||||
var outputPrefix: String? by FreezableVar(null)
|
||||
var outputPrefix: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@Argument(
|
||||
value = "-output-postfix",
|
||||
valueDescription = "<path>",
|
||||
description = "Path to file which will be added to the end of output file"
|
||||
)
|
||||
var outputPostfix: String? by FreezableVar(null)
|
||||
var outputPostfix: String? by NullableStringFreezableVar(null)
|
||||
|
||||
// Advanced options
|
||||
|
||||
@@ -112,5 +112,5 @@ class K2JSCompilerArguments : CommonCompilerArguments() {
|
||||
valueDescription = "<path>",
|
||||
description = "Paths to friend modules"
|
||||
)
|
||||
var friendModules: String? by FreezableVar(null)
|
||||
var friendModules: String? by NullableStringFreezableVar(null)
|
||||
}
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@ class K2JSDceArguments : CommonToolArguments() {
|
||||
description = "Output directory"
|
||||
)
|
||||
@GradleOption(DefaultValues.StringNullDefault::class)
|
||||
var outputDirectory: String? by FreezableVar(null)
|
||||
var outputDirectory: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@Argument(
|
||||
value = "-keep",
|
||||
|
||||
+11
-11
@@ -16,10 +16,10 @@ class K2JVMCompilerArguments : CommonCompilerArguments() {
|
||||
}
|
||||
|
||||
@Argument(value = "-d", valueDescription = "<directory|jar>", description = "Destination for generated class files")
|
||||
var destination: String? by FreezableVar(null)
|
||||
var destination: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@Argument(value = "-classpath", shortName = "-cp", valueDescription = "<path>", description = "Paths where to find user class files")
|
||||
var classpath: String? by FreezableVar(null)
|
||||
var classpath: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@GradleOption(DefaultValues.BooleanFalseDefault::class)
|
||||
@Argument(value = "-include-runtime", description = "Include Kotlin runtime in to resulting .jar")
|
||||
@@ -31,7 +31,7 @@ class K2JVMCompilerArguments : CommonCompilerArguments() {
|
||||
valueDescription = "<path>",
|
||||
description = "Path to JDK home directory to include into classpath, if differs from default JAVA_HOME"
|
||||
)
|
||||
var jdkHome: String? by FreezableVar(null)
|
||||
var jdkHome: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@GradleOption(DefaultValues.BooleanFalseDefault::class)
|
||||
@Argument(value = "-no-jdk", description = "Don't include Java runtime into classpath")
|
||||
@@ -56,7 +56,7 @@ class K2JVMCompilerArguments : CommonCompilerArguments() {
|
||||
var scriptTemplates: Array<String>? by FreezableVar(null)
|
||||
|
||||
@Argument(value = "-module-name", valueDescription = "<name>", description = "Name of the generated .kotlin_module file")
|
||||
var moduleName: String? by FreezableVar(null)
|
||||
var moduleName: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@GradleOption(DefaultValues.JvmTargetVersions::class)
|
||||
@Argument(
|
||||
@@ -64,7 +64,7 @@ class K2JVMCompilerArguments : CommonCompilerArguments() {
|
||||
valueDescription = "<version>",
|
||||
description = "Target version of the generated JVM bytecode (1.6 or 1.8), default is 1.6"
|
||||
)
|
||||
var jvmTarget: String? by FreezableVar(JvmTarget.DEFAULT.description)
|
||||
var jvmTarget: String? by NullableStringFreezableVar(JvmTarget.DEFAULT.description)
|
||||
|
||||
@GradleOption(DefaultValues.BooleanFalseDefault::class)
|
||||
@Argument(value = "-java-parameters", description = "Generate metadata for Java 1.8 reflection on method parameters")
|
||||
@@ -76,7 +76,7 @@ class K2JVMCompilerArguments : CommonCompilerArguments() {
|
||||
var useIR: Boolean by FreezableVar(false)
|
||||
|
||||
@Argument(value = "-Xmodule-path", valueDescription = "<path>", description = "Paths where to find Java 9+ modules")
|
||||
var javaModulePath: String? by FreezableVar(null)
|
||||
var javaModulePath: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@Argument(
|
||||
value = "-Xadd-modules",
|
||||
@@ -112,7 +112,7 @@ class K2JVMCompilerArguments : CommonCompilerArguments() {
|
||||
valueDescription = "{disable|enable}",
|
||||
description = "Normalize constructor calls (disable: don't normalize; enable: normalize), default is disable"
|
||||
)
|
||||
var constructorCallNormalizationMode: String? by FreezableVar(null)
|
||||
var constructorCallNormalizationMode: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@Argument(
|
||||
value = "-Xassertions", valueDescription = "{always-enable|always-disable|jvm|legacy}",
|
||||
@@ -123,7 +123,7 @@ class K2JVMCompilerArguments : CommonCompilerArguments() {
|
||||
"-Xassertions=legacy: calculate condition on each call, check depends on jvm assertion settings in the kotlin package;\n" +
|
||||
"default: legacy"
|
||||
)
|
||||
var assertionsMode: String? by FreezableVar(JVMAssertionsMode.DEFAULT.description)
|
||||
var assertionsMode: String? by NullableStringFreezableVar(JVMAssertionsMode.DEFAULT.description)
|
||||
|
||||
@Argument(
|
||||
value = "-Xbuild-file",
|
||||
@@ -131,7 +131,7 @@ class K2JVMCompilerArguments : CommonCompilerArguments() {
|
||||
valueDescription = "<path>",
|
||||
description = "Path to the .xml build file to compile"
|
||||
)
|
||||
var buildFile: String? by FreezableVar(null)
|
||||
var buildFile: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@Argument(value = "-Xmultifile-parts-inherit", description = "Compile multifile classes as a hierarchy of parts and facade")
|
||||
var inheritMultifileParts: Boolean by FreezableVar(false)
|
||||
@@ -157,7 +157,7 @@ class K2JVMCompilerArguments : CommonCompilerArguments() {
|
||||
valueDescription = "<path>",
|
||||
description = "Path to JSON file to dump Java to Kotlin declaration mappings"
|
||||
)
|
||||
var declarationsOutputPath: String? by FreezableVar(null)
|
||||
var declarationsOutputPath: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@Argument(value = "-Xsingle-module", description = "Combine modules for source files and binary dependencies into a single module")
|
||||
var singleModule: Boolean by FreezableVar(false)
|
||||
@@ -218,7 +218,7 @@ class K2JVMCompilerArguments : CommonCompilerArguments() {
|
||||
description = "Specify behavior for Checker Framework compatqual annotations (NullableDecl/NonNullDecl).\n" +
|
||||
"Default value is 'enable'"
|
||||
)
|
||||
var supportCompatqualCheckerFrameworkAnnotations: String? by FreezableVar(null)
|
||||
var supportCompatqualCheckerFrameworkAnnotations: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@Argument(
|
||||
value = "-Xno-exception-on-explicit-equals-for-boxed-null",
|
||||
|
||||
+3
-3
@@ -22,7 +22,7 @@ class K2MetadataCompilerArguments : CommonCompilerArguments() {
|
||||
}
|
||||
|
||||
@Argument(value = "-d", valueDescription = "<directory|jar>", description = "Destination for generated .kotlin_metadata files")
|
||||
var destination: String? by FreezableVar(null)
|
||||
var destination: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@Argument(
|
||||
value = "-classpath",
|
||||
@@ -30,10 +30,10 @@ class K2MetadataCompilerArguments : CommonCompilerArguments() {
|
||||
valueDescription = "<path>",
|
||||
description = "Paths where to find library .kotlin_metadata files"
|
||||
)
|
||||
var classpath: String? by FreezableVar(null)
|
||||
var classpath: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@Argument(value = "-module-name", valueDescription = "<name>", description = "Name of the generated .kotlin_module file")
|
||||
var moduleName: String? by FreezableVar(null)
|
||||
var moduleName: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@Argument(
|
||||
value = "-Xjps",
|
||||
|
||||
Generated
Vendored
+22
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<resourceExtensions />
|
||||
<wildcardResourcePatterns>
|
||||
<entry name="!?*.java" />
|
||||
<entry name="!?*.form" />
|
||||
<entry name="!?*.class" />
|
||||
<entry name="!?*.groovy" />
|
||||
<entry name="!?*.scala" />
|
||||
<entry name="!?*.flex" />
|
||||
<entry name="!?*.kt" />
|
||||
<entry name="!?*.clj" />
|
||||
<entry name="!?*.aj" />
|
||||
</wildcardResourcePatterns>
|
||||
<annotationProcessing>
|
||||
<profile default="true" name="Default" enabled="false">
|
||||
<processorPath useClasspath="true" />
|
||||
</profile>
|
||||
</annotationProcessing>
|
||||
</component>
|
||||
</project>
|
||||
Generated
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
<component name="CopyrightManager">
|
||||
<settings default="" />
|
||||
</component>
|
||||
Generated
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
<component name="libraryTable">
|
||||
<library name="KotlinJavaRuntime">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/kotlin-runtime.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
idea/testData/configuration/noKotlincExistsNoSettingsLatestRuntimeNullizeEmptyStrings/.idea/misc.xml
Generated
Vendored
+6
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
||||
Generated
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/module.iml" filepath="$PROJECT_DIR$/module.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
BIN
Binary file not shown.
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
Vendored
@@ -22,6 +22,7 @@ import com.intellij.openapi.util.io.FileUtil
|
||||
import org.jetbrains.kotlin.config.ApiVersion
|
||||
import org.jetbrains.kotlin.config.KotlinFacetSettingsProvider
|
||||
import org.jetbrains.kotlin.config.LanguageVersion
|
||||
import org.jetbrains.kotlin.idea.compiler.configuration.Kotlin2JsCompilerArgumentsHolder
|
||||
import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCommonCompilerArgumentsHolder
|
||||
import org.jetbrains.kotlin.idea.project.getLanguageVersionSettings
|
||||
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
||||
@@ -112,6 +113,17 @@ open class ConfigureKotlinInTempDirTest : AbstractConfigureKotlinInTempDirTest()
|
||||
Assert.assertEquals(ApiVersion.KOTLIN_1_1, settings.apiVersion)
|
||||
}
|
||||
|
||||
fun testNoKotlincExistsNoSettingsLatestRuntimeNullizeEmptyStrings() {
|
||||
val application = ApplicationManager.getApplication() as ApplicationImpl
|
||||
application.isSaveAllowed = true
|
||||
Kotlin2JsCompilerArgumentsHolder.getInstance(project).update {
|
||||
sourceMapPrefix = ""
|
||||
sourceMapEmbedSources = ""
|
||||
}
|
||||
application.saveAll()
|
||||
Assert.assertTrue(project.baseDir.findFileByRelativePath(".idea/kotlinc.xml") == null)
|
||||
}
|
||||
|
||||
//todo[Sedunov]: wait for fix in platform to avoid misunderstood from Java newbies (also PluginStartupComponent)
|
||||
/*fun testKotlinSdkAdded() {
|
||||
Assert.assertTrue(ProjectJdkTable.getInstance().allJdks.any { it.sdkType is KotlinSdkType })
|
||||
|
||||
+11
@@ -109,6 +109,17 @@ open class ConfigureKotlinInTempDirTest : AbstractConfigureKotlinInTempDirTest()
|
||||
Assert.assertEquals(ApiVersion.KOTLIN_1_1, settings.apiVersion)
|
||||
}
|
||||
|
||||
fun testNoKotlincExistsNoSettingsLatestRuntimeNullizeEmptyStrings() {
|
||||
val application = ApplicationManager.getApplication() as ApplicationImpl
|
||||
application.doNotSave(false)
|
||||
Kotlin2JsCompilerArgumentsHolder.getInstance(project).update {
|
||||
sourceMapPrefix = ""
|
||||
sourceMapEmbedSources = ""
|
||||
}
|
||||
application.saveAll()
|
||||
Assert.assertTrue(project.baseDir.findFileByRelativePath(".idea/kotlinc.xml") == null)
|
||||
}
|
||||
|
||||
//todo[Sedunov]: wait for fix in platform to avoid misunderstood from Java newbies (also PluginStartupComponent)
|
||||
/*fun testKotlinSdkAdded() {
|
||||
Assert.assertTrue(ProjectJdkTable.getInstance().allJdks.any { it.sdkType is KotlinSdkType })
|
||||
|
||||
Reference in New Issue
Block a user