Language feature for nullability assertions on enhanced nullability
This commit is contained in:
+3
@@ -106,6 +106,9 @@ class K2JVMCompilerArguments : CommonCompilerArguments() {
|
|||||||
@Argument(value = "-Xno-param-assertions", description = "Don't generate not-null assertions on parameters of methods accessible from Java")
|
@Argument(value = "-Xno-param-assertions", description = "Don't generate not-null assertions on parameters of methods accessible from Java")
|
||||||
var noParamAssertions: Boolean by FreezableVar(false)
|
var noParamAssertions: Boolean by FreezableVar(false)
|
||||||
|
|
||||||
|
@Argument(value = "-Xstrict-java-nullability-assertions", description = "Generate nullability assertions for non-null Java expressions")
|
||||||
|
var strictJavaNullabilityAssertions: Boolean by FreezableVar(false)
|
||||||
|
|
||||||
@Argument(value = "-Xno-optimize", description = "Disable optimizations")
|
@Argument(value = "-Xno-optimize", description = "Disable optimizations")
|
||||||
var noOptimize: Boolean by FreezableVar(false)
|
var noOptimize: Boolean by FreezableVar(false)
|
||||||
|
|
||||||
|
|||||||
@@ -204,6 +204,8 @@ public abstract class CLICompiler<A extends CommonCompilerArguments> extends CLI
|
|||||||
extraLanguageFeatures.put(LanguageFeature.Coroutines, coroutinesState);
|
extraLanguageFeatures.put(LanguageFeature.Coroutines, coroutinesState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setupPlatformSpecificLanguageFeatureSettings(extraLanguageFeatures, arguments);
|
||||||
|
|
||||||
CommonConfigurationKeysKt.setLanguageVersionSettings(configuration, new LanguageVersionSettingsImpl(
|
CommonConfigurationKeysKt.setLanguageVersionSettings(configuration, new LanguageVersionSettingsImpl(
|
||||||
languageVersion,
|
languageVersion,
|
||||||
ApiVersion.createByLanguageVersion(apiVersion),
|
ApiVersion.createByLanguageVersion(apiVersion),
|
||||||
@@ -212,6 +214,13 @@ public abstract class CLICompiler<A extends CommonCompilerArguments> extends CLI
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void setupPlatformSpecificLanguageFeatureSettings(
|
||||||
|
@NotNull Map<LanguageFeature, LanguageFeature.State> extraLanguageFeatures,
|
||||||
|
@NotNull A commandLineArguments
|
||||||
|
) {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private static KotlinPaths computeKotlinPaths(@NotNull MessageCollector messageCollector, @NotNull CommonCompilerArguments arguments) {
|
private static KotlinPaths computeKotlinPaths(@NotNull MessageCollector messageCollector, @NotNull CommonCompilerArguments arguments) {
|
||||||
KotlinPaths paths;
|
KotlinPaths paths;
|
||||||
|
|||||||
@@ -228,6 +228,17 @@ class K2JVMCompiler : CLICompiler<K2JVMCompilerArguments>() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun setupPlatformSpecificLanguageFeatureSettings(
|
||||||
|
extraLanguageFeatures: MutableMap<LanguageFeature, LanguageFeature.State>,
|
||||||
|
commandLineArguments: K2JVMCompilerArguments
|
||||||
|
) {
|
||||||
|
if (commandLineArguments.strictJavaNullabilityAssertions) {
|
||||||
|
extraLanguageFeatures[LanguageFeature.StrictJavaNullabilityAssertions] = LanguageFeature.State.ENABLED
|
||||||
|
}
|
||||||
|
|
||||||
|
super.setupPlatformSpecificLanguageFeatureSettings(extraLanguageFeatures, commandLineArguments)
|
||||||
|
}
|
||||||
|
|
||||||
private fun registerJavacIfNeeded(environment: KotlinCoreEnvironment,
|
private fun registerJavacIfNeeded(environment: KotlinCoreEnvironment,
|
||||||
arguments: K2JVMCompilerArguments): Boolean {
|
arguments: K2JVMCompilerArguments): Boolean {
|
||||||
if (arguments.useJavac) {
|
if (arguments.useJavac) {
|
||||||
@@ -374,8 +385,6 @@ class K2JVMCompiler : CLICompiler<K2JVMCompilerArguments>() {
|
|||||||
configuration.put(JVMConfigurationKeys.ADD_BUILT_INS_FROM_COMPILER_TO_DEPENDENCIES, arguments.addCompilerBuiltIns)
|
configuration.put(JVMConfigurationKeys.ADD_BUILT_INS_FROM_COMPILER_TO_DEPENDENCIES, arguments.addCompilerBuiltIns)
|
||||||
configuration.put(JVMConfigurationKeys.CREATE_BUILT_INS_FROM_MODULE_DEPENDENCIES, arguments.loadBuiltInsFromDependencies)
|
configuration.put(JVMConfigurationKeys.CREATE_BUILT_INS_FROM_MODULE_DEPENDENCIES, arguments.loadBuiltInsFromDependencies)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
arguments.declarationsOutputPath?.let { configuration.put(JVMConfigurationKeys.DECLARATIONS_JSON_PATH, it) }
|
arguments.declarationsOutputPath?.let { configuration.put(JVMConfigurationKeys.DECLARATIONS_JSON_PATH, it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
@@ -26,6 +26,8 @@ where advanced options include:
|
|||||||
Script resolver environment in key-value pairs (the value could be quoted and escaped)
|
Script resolver environment in key-value pairs (the value could be quoted and escaped)
|
||||||
-Xsingle-module Combine modules for source files and binary dependencies into a single module
|
-Xsingle-module Combine modules for source files and binary dependencies into a single module
|
||||||
-Xskip-runtime-version-check Allow Kotlin runtime libraries of incompatible versions in the classpath
|
-Xskip-runtime-version-check Allow Kotlin runtime libraries of incompatible versions in the classpath
|
||||||
|
-Xstrict-java-nullability-assertions
|
||||||
|
Generate nullability assertions for non-null Java expressions
|
||||||
-Xuse-javac Use javac for Java source and class files analysis
|
-Xuse-javac Use javac for Java source and class files analysis
|
||||||
-Xuse-old-class-files-reading Use old class files reading implementation (may slow down the build and should be used in case of problems with the new implementation)
|
-Xuse-old-class-files-reading Use old class files reading implementation (may slow down the build and should be used in case of problems with the new implementation)
|
||||||
-Xallow-kotlin-package Allow compiling code in package 'kotlin' and allow not requiring kotlin.stdlib in module-info
|
-Xallow-kotlin-package Allow compiling code in package 'kotlin' and allow not requiring kotlin.stdlib in module-info
|
||||||
|
|||||||
@@ -74,6 +74,8 @@ enum class LanguageFeature(
|
|||||||
RestrictionOfWrongAnnotationsWithUseSiteTargetsOnTypes(KOTLIN_1_3),
|
RestrictionOfWrongAnnotationsWithUseSiteTargetsOnTypes(KOTLIN_1_3),
|
||||||
ProhibitInnerClassesOfGenericClassExtendingThrowable(KOTLIN_1_3),
|
ProhibitInnerClassesOfGenericClassExtendingThrowable(KOTLIN_1_3),
|
||||||
|
|
||||||
|
StrictJavaNullabilityAssertions(sinceVersion = null, defaultState = State.DISABLED),
|
||||||
|
|
||||||
// Experimental features
|
// Experimental features
|
||||||
|
|
||||||
Coroutines(KOTLIN_1_1, ApiVersion.KOTLIN_1_1, "https://kotlinlang.org/docs/diagnostics/experimental-coroutines", State.ENABLED_WITH_WARNING),
|
Coroutines(KOTLIN_1_1, ApiVersion.KOTLIN_1_1, "https://kotlinlang.org/docs/diagnostics/experimental-coroutines", State.ENABLED_WITH_WARNING),
|
||||||
|
|||||||
Reference in New Issue
Block a user