Introduce -opt-in stable compiler option instead of -Xopt-in
#KT-47099 Fixed
This commit is contained in:
committed by
teamcityserver
parent
47c8bab48e
commit
d8417fd622
+21
-3
@@ -83,6 +83,15 @@ abstract class CommonCompilerArguments : CommonToolArguments() {
|
||||
@Argument(value = "-P", valueDescription = PLUGIN_OPTION_FORMAT, description = "Pass an option to a plugin")
|
||||
var pluginOptions: Array<String>? by FreezableVar(null)
|
||||
|
||||
@Argument(
|
||||
value = "-opt-in",
|
||||
// Uncomment after deletion of optInDeprecated
|
||||
// deprecatedName = "-Xopt-in",
|
||||
valueDescription = "<fq.name>",
|
||||
description = "Enable usages of API that requires opt-in with an opt-in requirement marker with the given fully qualified name"
|
||||
)
|
||||
var optIn: Array<String>? by FreezableVar(null)
|
||||
|
||||
// Advanced options
|
||||
|
||||
@Argument(value = "-Xno-inline", description = "Disable method inlining")
|
||||
@@ -172,12 +181,13 @@ abstract class CommonCompilerArguments : CommonToolArguments() {
|
||||
)
|
||||
var useExperimental: Array<String>? by FreezableVar(null)
|
||||
|
||||
// NB: we have to keep this flag for some time due to bootstrapping problems
|
||||
@Argument(
|
||||
value = "-Xopt-in",
|
||||
valueDescription = "<fq.name>",
|
||||
description = "Enable usages of API that requires opt-in with an opt-in requirement marker with the given fully qualified name"
|
||||
)
|
||||
var optIn: Array<String>? by FreezableVar(null)
|
||||
var optInDeprecated: Array<String>? by FreezableVar(null)
|
||||
|
||||
@Argument(
|
||||
value = "-Xproper-ieee754-comparisons",
|
||||
@@ -384,9 +394,17 @@ abstract class CommonCompilerArguments : CommonToolArguments() {
|
||||
}
|
||||
val useExperimentalFqNames = useExperimental?.toList().orEmpty()
|
||||
if (useExperimentalFqNames.isNotEmpty()) {
|
||||
collector.report(WARNING, "'-Xuse-experimental' is deprecated and will be removed in a future release")
|
||||
collector.report(
|
||||
WARNING, "'-Xuse-experimental' is deprecated and will be removed in a future release, please use -opt-in instead"
|
||||
)
|
||||
}
|
||||
put(AnalysisFlags.useExperimental, useExperimentalFqNames + optIn?.toList().orEmpty())
|
||||
val optInDeprecatedFqNames = optInDeprecated?.toList().orEmpty()
|
||||
if (optInDeprecatedFqNames.isNotEmpty()) {
|
||||
collector.report(
|
||||
WARNING, "'-Xopt-in' is deprecated and will be removed in a future release, please use -opt-in instead"
|
||||
)
|
||||
}
|
||||
put(AnalysisFlags.useExperimental, useExperimentalFqNames + optInDeprecatedFqNames + optIn?.toList().orEmpty())
|
||||
put(AnalysisFlags.expectActualLinker, expectActualLinker)
|
||||
put(AnalysisFlags.explicitApiVersion, apiVersion != null)
|
||||
put(AnalysisFlags.allowResultReturnType, allowResultReturnType)
|
||||
|
||||
+1
-1
@@ -596,7 +596,7 @@ class FirDefaultErrorMessages {
|
||||
map.put(EXPERIMENTAL_OVERRIDE, "{1}", TO_STRING, STRING)
|
||||
map.put(EXPERIMENTAL_OVERRIDE_ERROR, "{1}", TO_STRING, STRING)
|
||||
|
||||
map.put(EXPERIMENTAL_IS_NOT_ENABLED, "This class can only be used with the compiler argument '-Xopt-in=kotlin.RequiresOptIn'")
|
||||
map.put(EXPERIMENTAL_IS_NOT_ENABLED, "This class can only be used with the compiler argument '-opt-in=kotlin.RequiresOptIn'")
|
||||
map.put(EXPERIMENTAL_CAN_ONLY_BE_USED_AS_ANNOTATION, "This class can only be used as an annotation")
|
||||
map.put(
|
||||
EXPERIMENTAL_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_USE_EXPERIMENTAL,
|
||||
|
||||
Vendored
+1
@@ -21,6 +21,7 @@ where possible options include:
|
||||
-help (-h) Print a synopsis of standard options
|
||||
-kotlin-home <path> Path to the home directory of Kotlin compiler used for discovery of runtime libraries
|
||||
-language-version <version> Provide source compatibility with the specified version of Kotlin
|
||||
-opt-in <fq.name> Enable usages of API that requires opt-in with an opt-in requirement marker with the given fully qualified name
|
||||
-P plugin:<pluginId>:<optionName>=<value>
|
||||
Pass an option to a plugin
|
||||
-progressive Enable progressive compiler mode.
|
||||
|
||||
+4
-2
@@ -1,6 +1,8 @@
|
||||
$TESTDATA_DIR$/experimentalAndUseExperimentalWithSameAnnotation.kt
|
||||
-d
|
||||
$TEMP_DIR$
|
||||
-Xopt-in=kotlin.RequiresOptIn
|
||||
-opt-in
|
||||
kotlin.RequiresOptIn
|
||||
-opt-in
|
||||
org.test.ExperimentalAPI
|
||||
-Xexperimental=org.test.ExperimentalAPI
|
||||
-Xopt-in=org.test.ExperimentalAPI
|
||||
|
||||
+6
-3
@@ -1,8 +1,11 @@
|
||||
$TESTDATA_DIR$/experimentalDeprecated.kt
|
||||
-d
|
||||
$TEMP_DIR$
|
||||
-Xopt-in=kotlin.RequiresOptIn
|
||||
-opt-in
|
||||
kotlin.RequiresOptIn
|
||||
-Xexperimental=org.test.Error1
|
||||
-Xexperimental=org.test.Hidden1
|
||||
-Xopt-in=org.test.Error2
|
||||
-Xopt-in=org.test.Hidden2
|
||||
-opt-in
|
||||
org.test.Error2
|
||||
-opt-in
|
||||
org.test.Hidden2
|
||||
|
||||
@@ -2,6 +2,9 @@ $TESTDATA_DIR$/experimentalDeprecatedWarning.kt
|
||||
-d
|
||||
$TEMP_DIR$
|
||||
-Xopt-in=kotlin.RequiresOptIn
|
||||
-Xopt-in=org.test.Warning1
|
||||
-opt-in
|
||||
kotlin.RequiresOptIn
|
||||
-opt-in
|
||||
org.test.Warning1
|
||||
-Xexperimental=org.test.Warning2
|
||||
-Xuse-experimental=org.test.OneMore
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
warning: '-Xexperimental' is deprecated and will be removed in a future release
|
||||
warning: '-Xuse-experimental' is deprecated and will be removed in a future release
|
||||
warning: '-Xuse-experimental' is deprecated and will be removed in a future release, please use -opt-in instead
|
||||
warning: '-Xopt-in' is deprecated and will be removed in a future release, please use -opt-in instead
|
||||
warning: opt-in requirement marker org.test.Warning2 is deprecated. Warning2
|
||||
warning: opt-in requirement marker org.test.Warning1 is deprecated. Warning1
|
||||
OK
|
||||
|
||||
@@ -2,4 +2,5 @@ $TESTDATA_DIR$/experimentalIsNotAnnotation.kt
|
||||
-d
|
||||
$TEMP_DIR$
|
||||
-Xexperimental=org.test.NotAnAnnotation1
|
||||
-Xopt-in=org.test.NotAnAnnotation2
|
||||
-opt-in
|
||||
org.test.NotAnAnnotation2
|
||||
|
||||
+2
-1
@@ -2,4 +2,5 @@ $TESTDATA_DIR$/experimentalIsNotMarker.kt
|
||||
-d
|
||||
$TEMP_DIR$
|
||||
-Xexperimental=org.test.NotAMarker1
|
||||
-Xopt-in=org.test.NotAMarker2
|
||||
-opt-in
|
||||
org.test.NotAMarker2
|
||||
|
||||
+2
-1
@@ -1,5 +1,6 @@
|
||||
$TESTDATA_DIR$/experimentalNested.kt
|
||||
-d
|
||||
$TEMP_DIR$
|
||||
-Xopt-in=kotlin.RequiresOptIn
|
||||
-opt-in
|
||||
kotlin.RequiresOptIn
|
||||
-Xexperimental=org.test.Outer.Nested
|
||||
|
||||
+5
-2
@@ -1,6 +1,9 @@
|
||||
$TESTDATA_DIR$/experimentalUnresolved.kt
|
||||
-d
|
||||
$TEMP_DIR$
|
||||
-Xopt-in=org.test.Unresolved1
|
||||
-opt-in
|
||||
org.test.Unresolved1
|
||||
-opt-in
|
||||
org.test.Unresolved3
|
||||
-Xexperimental=org.test.Unresolved2
|
||||
-Xopt-in=org.test.Unresolved3
|
||||
|
||||
|
||||
Vendored
+1
@@ -19,6 +19,7 @@ where possible options include:
|
||||
-help (-h) Print a synopsis of standard options
|
||||
-kotlin-home <path> Path to the home directory of Kotlin compiler used for discovery of runtime libraries
|
||||
-language-version <version> Provide source compatibility with the specified version of Kotlin
|
||||
-opt-in <fq.name> Enable usages of API that requires opt-in with an opt-in requirement marker with the given fully qualified name
|
||||
-P plugin:<pluginId>:<optionName>=<value>
|
||||
Pass an option to a plugin
|
||||
-progressive Enable progressive compiler mode.
|
||||
|
||||
Vendored
+2
-1
@@ -3,4 +3,5 @@ $TESTDATA_DIR$/useDeclarationThatWasExperimentalWithoutMarker.kt
|
||||
$TEMP_DIR$
|
||||
-language-version
|
||||
1.3
|
||||
-Xopt-in=kotlin.ExperimentalStdlibApi
|
||||
-opt-in
|
||||
kotlin.ExperimentalStdlibApi
|
||||
@@ -1,5 +1,5 @@
|
||||
// WITH_RUNTIME
|
||||
// ADDITIONAL_COMPILER_ARGUMENTS: -Xopt-in=kotlin.ExperimentalMultiplatform
|
||||
// ADDITIONAL_COMPILER_ARGUMENTS: -opt-in=kotlin.ExperimentalMultiplatform
|
||||
|
||||
@OptionalExpectation
|
||||
expect annotation class A()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// WITH_RUNTIME
|
||||
// ADDITIONAL_COMPILER_ARGUMENTS: -Xopt-in=kotlin.ExperimentalMultiplatform
|
||||
// ADDITIONAL_COMPILER_ARGUMENTS: -opt-in=kotlin.ExperimentalMultiplatform
|
||||
|
||||
@OptionalExpectation
|
||||
expect annotation class A()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// "Safe delete 'Marker'" "false"
|
||||
// COMPILER_ARGUMENTS: -Xopt-in=kotlin.RequiresOptIn -Xopt-in=test.Marker
|
||||
// COMPILER_ARGUMENTS: -opt-in=kotlin.RequiresOptIn -opt-in=test.Marker
|
||||
// WITH_RUNTIME
|
||||
// ACTION: Rename file to Marker.kt
|
||||
// TOOL: org.jetbrains.kotlin.idea.inspections.UnusedSymbolInspection
|
||||
|
||||
Reference in New Issue
Block a user