org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of kotlin-compiler-embeddable Show documentation
Show all versions of kotlin-compiler-embeddable Show documentation
the Kotlin compiler embeddable
/*
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.cli.common.arguments
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
import org.jetbrains.kotlin.config.*
class K2JVMCompilerArguments : CommonCompilerArguments() {
companion object {
@JvmStatic
private val serialVersionUID = 0L
}
@Argument(value = "-d", valueDescription = "", description = "Destination for generated class files.")
var destination: String? = null
set(value) {
checkFrozen()
field = if (value.isNullOrEmpty()) null else value
}
@Argument(
value = "-classpath",
shortName = "-cp",
valueDescription = "",
description = "List of directories and JAR/ZIP archives to search for user class files."
)
var classpath: String? = null
set(value) {
checkFrozen()
field = if (value.isNullOrEmpty()) null else value
}
@Argument(value = "-include-runtime", description = "Include the Kotlin runtime in the resulting JAR.")
var includeRuntime = false
set(value) {
checkFrozen()
field = value
}
@Argument(
value = "-jdk-home",
valueDescription = "",
description = "Include a custom JDK from the specified location in the classpath instead of the default 'JAVA_HOME'."
)
var jdkHome: String? = null
set(value) {
checkFrozen()
field = if (value.isNullOrEmpty()) null else value
}
@GradleOption(
value = DefaultValue.BOOLEAN_FALSE_DEFAULT,
gradleInputType = GradleInputTypes.INPUT,
shouldGenerateDeprecatedKotlinOptions = true,
)
@Argument(value = "-no-jdk", description = "Don't automatically include the Java runtime in the classpath.")
var noJdk = false
set(value) {
checkFrozen()
field = value
}
@Argument(
value = "-no-stdlib",
description = "Don't automatically include the Kotlin/JVM stdlib and Kotlin reflection dependencies in the classpath."
)
var noStdlib = false
set(value) {
checkFrozen()
field = value
}
@Argument(value = "-no-reflect", description = "Don't automatically include the Kotlin reflection dependency in the classpath.")
var noReflect = false
set(value) {
checkFrozen()
field = value
}
@Argument(
value = "-expression",
shortName = "-e",
description = "Evaluate the given string as a Kotlin script."
)
var expression: String? = null
set(value) {
checkFrozen()
field = value
}
@Argument(
value = "-script-templates",
valueDescription = "",
description = "Script definition template classes."
)
var scriptTemplates: Array? = null
set(value) {
checkFrozen()
field = value
}
@GradleOption(
value = DefaultValue.STRING_NULL_DEFAULT,
gradleInputType = GradleInputTypes.INPUT,
shouldGenerateDeprecatedKotlinOptions = true,
)
@Argument(value = "-module-name", valueDescription = "", description = "Name of the generated '.kotlin_module' file.")
var moduleName: String? = null
set(value) {
checkFrozen()
field = if (value.isNullOrEmpty()) null else value
}
@GradleOption(
value = DefaultValue.JVM_TARGET_VERSIONS,
gradleInputType = GradleInputTypes.INPUT,
shouldGenerateDeprecatedKotlinOptions = true,
)
@Argument(
value = "-jvm-target",
valueDescription = "",
description = "The target version of the generated JVM bytecode (${JvmTarget.SUPPORTED_VERSIONS_DESCRIPTION}), with 1.8 as the default.",
)
var jvmTarget: String? = null
set(value) {
checkFrozen()
field = if (value.isNullOrEmpty()) null else value
}
@GradleOption(
value = DefaultValue.BOOLEAN_FALSE_DEFAULT,
gradleInputType = GradleInputTypes.INPUT,
shouldGenerateDeprecatedKotlinOptions = true,
)
@Argument(value = "-java-parameters", description = "Generate metadata for Java 1.8 reflection on method parameters.")
var javaParameters = false
set(value) {
checkFrozen()
field = value
}
// Advanced options
@Argument(value = "-Xuse-old-backend", description = "Use the old JVM backend.")
var useOldBackend = false
set(value) {
checkFrozen()
field = value
}
@Argument(
value = "-Xallow-unstable-dependencies",
description = "Do not report errors on classes in dependencies that were compiled by an unstable version of the Kotlin compiler."
)
var allowUnstableDependencies = false
set(value) {
checkFrozen()
field = value
}
@Argument(
value = "-Xabi-stability",
valueDescription = "{stable|unstable}",
description = """When using unstable compiler features such as FIR, use 'stable' to mark generated class files as stable
to prevent diagnostics from being reported when using stable compilers at the call site.
When using the JVM IR backend, conversely, use 'unstable' to mark generated class files as unstable
to force diagnostics to be reported."""
)
var abiStability: String? = null
set(value) {
checkFrozen()
field = value
}
@Argument(
value = "-Xir-do-not-clear-binding-context",
description = "When using the IR backend, do not clear BindingContext between 'psi2ir' and lowerings."
)
var doNotClearBindingContext = false
set(value) {
checkFrozen()
field = value
}
@Argument(
value = "-Xbackend-threads",
valueDescription = "",
description = """When using the IR backend, run lowerings by file in N parallel threads.
0 means use one thread per processor core.
The default value is 1."""
)
var backendThreads: String = "1"
set(value) {
checkFrozen()
field = value
}
@Argument(value = "-Xmodule-path", valueDescription = "", description = "Paths to Java 9+ modules.")
var javaModulePath: String? = null
set(value) {
checkFrozen()
field = if (value.isNullOrEmpty()) null else value
}
@Argument(
value = "-Xadd-modules",
valueDescription = "",
description = """Root modules to resolve in addition to the initial modules, or all modules on the module path if is ALL-MODULE-PATH."""
)
var additionalJavaModules: Array? = null
set(value) {
checkFrozen()
field = value
}
@Argument(value = "-Xno-call-assertions", description = "Don't generate not-null assertions for arguments of platform types.")
var noCallAssertions = false
set(value) {
checkFrozen()
field = value
}
@Argument(
value = "-Xno-receiver-assertions",
description = "Don't generate not-null assertions for extension receiver arguments of platform types."
)
var noReceiverAssertions = false
set(value) {
checkFrozen()
field = value
}
@Argument(
value = "-Xno-param-assertions",
description = "Don't generate not-null assertions on parameters of methods accessible from Java."
)
var noParamAssertions = false
set(value) {
checkFrozen()
field = value
}
@Argument(value = "-Xno-optimize", description = "Disable optimizations.")
var noOptimize = false
set(value) {
checkFrozen()
field = value
}
@Argument(
value = "-Xassertions", valueDescription = "{always-enable|always-disable|jvm|legacy}",
description = """'kotlin.assert' call behavior:
-Xassertions=always-enable: enable, ignore JVM assertion settings;
-Xassertions=always-disable: disable, ignore JVM assertion settings;
-Xassertions=jvm: enable, depend on JVM assertion settings;
-Xassertions=legacy: calculate the condition on each call, the behavior depends on JVM assertion settings in the kotlin package;
default: legacy"""
)
var assertionsMode: String? = JVMAssertionsMode.DEFAULT.description
set(value) {
checkFrozen()
field = if (value.isNullOrEmpty()) JVMAssertionsMode.DEFAULT.description else value
}
@Argument(
value = "-Xbuild-file",
deprecatedName = "-module",
valueDescription = "",
description = "Path to the .xml build file to compile."
)
var buildFile: String? = null
set(value) {
checkFrozen()
field = if (value.isNullOrEmpty()) null else value
}
@Argument(value = "-Xmultifile-parts-inherit", description = "Compile multifile classes as a hierarchy of parts and a facade.")
var inheritMultifileParts = false
set(value) {
checkFrozen()
field = value
}
@Argument(value = "-Xuse-type-table", description = "Use a type table in metadata serialization.")
var useTypeTable = false
set(value) {
checkFrozen()
field = value
}
@Argument(
value = "-Xuse-old-class-files-reading",
description = """Use the old implementation for reading class files. This may slow down the compilation and cause problems with Groovy interop.
This can be used in the event of problems with the new implementation."""
)
var useOldClassFilesReading = false
set(value) {
checkFrozen()
field = value
}
@Argument(
value = "-Xuse-fast-jar-file-system",
description = "Use the fast implementation of Jar FS. This may speed up compilation time, but it is experimental."
)
var useFastJarFileSystem: Boolean? = null
set(value) {
checkFrozen()
field = value
}
@Argument(
value = "-Xsuppress-missing-builtins-error",
description = """Suppress the "cannot access built-in declaration" error (useful with '-no-stdlib')."""
)
var suppressMissingBuiltinsError = false
set(value) {
checkFrozen()
field = value
}
@Argument(
value = "-Xscript-resolver-environment",
valueDescription = "",
description = "Set the script resolver environment in key-value pairs (the value can be quoted and escaped)."
)
var scriptResolverEnvironment: Array? = null
set(value) {
checkFrozen()
field = value
}
// Javac options
@Argument(value = "-Xuse-javac", description = "Use javac for Java source and class file analysis.")
var useJavac = false
set(value) {
checkFrozen()
field = value
}
@Argument(value = "-Xcompile-java", description = "Reuse 'javac' analysis and compile Java source files.")
var compileJava = false
set(value) {
checkFrozen()
field = value
}
@Argument(
value = "-Xjavac-arguments",
valueDescription = "