diff --git a/Interop/Runtime/build.gradle b/Interop/Runtime/build.gradle index a5735ddd592..d2b94ee2e63 100644 --- a/Interop/Runtime/build.gradle +++ b/Interop/Runtime/build.gradle @@ -74,7 +74,7 @@ sourceSets.main.kotlin.srcDirs += "src/jvm/kotlin" compileKotlin { kotlinOptions { - freeCompilerArgs = ['-Xuse-experimental=kotlin.ExperimentalUnsignedTypes', "-XXLanguage:+InlineClasses"] + freeCompilerArgs = ['-Xopt-in=kotlin.ExperimentalUnsignedTypes', '-Xinline-classes'] } } diff --git a/Interop/Runtime/src/main/kotlin/kotlinx/cinterop/Utils.kt b/Interop/Runtime/src/main/kotlin/kotlinx/cinterop/Utils.kt index 3062fd3fd68..c85f8e9090e 100644 --- a/Interop/Runtime/src/main/kotlin/kotlinx/cinterop/Utils.kt +++ b/Interop/Runtime/src/main/kotlin/kotlinx/cinterop/Utils.kt @@ -560,7 +560,7 @@ public fun CPointer.toKStringFromUtf32(): String { * * Malformed byte sequences are replaced by the replacement char `\uFFFD`. */ -@UseExperimental(ExperimentalStdlibApi::class) +@OptIn(ExperimentalStdlibApi::class) @SinceKotlin("1.3") public fun ByteArray.toKString() : String { val realEndIndex = realEndIndex(this, 0, this.size) @@ -579,7 +579,7 @@ public fun ByteArray.toKString() : String { * @throws IllegalArgumentException if [startIndex] is greater than [endIndex]. * @throws CharacterCodingException if the byte array contains malformed UTF-8 byte sequence and [throwOnInvalidSequence] is true. */ -@UseExperimental(ExperimentalStdlibApi::class) +@OptIn(ExperimentalStdlibApi::class) @SinceKotlin("1.3") public fun ByteArray.toKString( startIndex: Int = 0, diff --git a/Interop/StubGenerator/build.gradle b/Interop/StubGenerator/build.gradle index 1624b3e7363..aa5dc0151a8 100644 --- a/Interop/StubGenerator/build.gradle +++ b/Interop/StubGenerator/build.gradle @@ -44,6 +44,6 @@ dependencies { compileKotlin { kotlinOptions { - freeCompilerArgs = ['-Xuse-experimental=kotlin.ExperimentalUnsignedTypes', '-Xskip-metadata-version-check'] + freeCompilerArgs = ['-Xopt-in=kotlin.ExperimentalUnsignedTypes', '-Xskip-metadata-version-check'] } } diff --git a/backend.native/build.gradle b/backend.native/build.gradle index 8481d3d9841..a441d21bacd 100644 --- a/backend.native/build.gradle +++ b/backend.native/build.gradle @@ -219,9 +219,9 @@ targetList.each { target -> args = [*konanArgs, '-output', project(':runtime').file("build/${target}Stdlib"), '-produce', 'library', '-module-name', 'stdlib', '-XXLanguage:+AllowContractsForCustomFunctions', - '-Xmulti-platform', '-Xuse-experimental=kotlin.Experimental', '-XXLanguage:+InlineClasses', - '-Xuse-experimental=kotlin.contracts.ExperimentalContracts', - '-Xuse-experimental=kotlin.ExperimentalMultiplatform', + '-Xmulti-platform', '-Xopt-in=kotlin.RequiresOptIn', '-Xinline-classes', + '-Xopt-in=kotlin.contracts.ExperimentalContracts', + '-Xopt-in=kotlin.ExperimentalMultiplatform', '-Xallow-result-return-type', commonSrc.absolutePath, "-Xcommon-sources=${commonSrc.absolutePath}", diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index 0bbc8f65f29..4e340b907f7 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -1446,7 +1446,7 @@ linkTest("classDelegation_linkTest") { } standaloneTest("contracts") { - flags = [ '-Xuse-experimental=kotlin.Experimental', '-tr' ] + flags = [ '-Xopt-in=kotlin.RequiresOptIn', '-tr' ] source = "codegen/contracts/contracts.kt" } @@ -4180,7 +4180,7 @@ KotlinNativeTestKt.createTest(project, 'stdlibTest', KonanGTest) { task -> baseDir "$testOutputStdlib/stdlibTest" enableMultiplatform true extraOpts '-tr', - '-Xuse-experimental=kotlin.Experimental,kotlin.ExperimentalStdlibApi', + '-Xopt-in=kotlin.RequiresOptIn,kotlin.ExperimentalStdlibApi', "-friend-modules", project.rootProject.file("${project.properties['konan.home']}/klib/common/stdlib").absolutePath extraOpts project.globalTestArgs } diff --git a/backend.native/tests/codegen/associatedObjects/associatedObjects1.kt b/backend.native/tests/codegen/associatedObjects/associatedObjects1.kt index a239b8ba0fa..02f1862655f 100644 --- a/backend.native/tests/codegen/associatedObjects/associatedObjects1.kt +++ b/backend.native/tests/codegen/associatedObjects/associatedObjects1.kt @@ -9,7 +9,7 @@ import kotlin.test.* import kotlin.reflect.* @Test -@UseExperimental(ExperimentalAssociatedObjects::class) +@OptIn(ExperimentalAssociatedObjects::class) fun testBasics1() { assertSame(Bar, Foo::class.findAssociatedObject()) assertSame(Baz, Foo::class.findAssociatedObject()) @@ -18,17 +18,17 @@ fun testBasics1() { assertSame(null, Bar::class.findAssociatedObject()) } -@UseExperimental(ExperimentalAssociatedObjects::class) +@OptIn(ExperimentalAssociatedObjects::class) @AssociatedObjectKey @Retention(AnnotationRetention.BINARY) annotation class Associated1(val kClass: KClass<*>) -@UseExperimental(ExperimentalAssociatedObjects::class) +@OptIn(ExperimentalAssociatedObjects::class) @AssociatedObjectKey @Retention(AnnotationRetention.BINARY) annotation class Associated2(val kClass: KClass<*>) -@UseExperimental(ExperimentalAssociatedObjects::class) +@OptIn(ExperimentalAssociatedObjects::class) @AssociatedObjectKey @Retention(AnnotationRetention.BINARY) annotation class Associated3(val kClass: KClass<*>) @@ -41,7 +41,7 @@ object Bar object Baz @Test -@UseExperimental(ExperimentalAssociatedObjects::class) +@OptIn(ExperimentalAssociatedObjects::class) fun testGlobalOptimizations1() { val i1 = I1ImplHolder::class.findAssociatedObject()!! as I1 assertEquals(42, i1.foo()) @@ -68,7 +68,7 @@ private object I1Impl : I1 { private class I1ImplHolder @Test -@UseExperimental(ExperimentalAssociatedObjects::class) +@OptIn(ExperimentalAssociatedObjects::class) fun testGlobalOptimizations2() { val i2 = I2ImplHolder()::class.findAssociatedObject()!! as I2 assertEquals(17, i2.foo()) diff --git a/backend.native/tests/codegen/contracts/contracts.kt b/backend.native/tests/codegen/contracts/contracts.kt index f9ab1154b44..cf87b973605 100644 --- a/backend.native/tests/codegen/contracts/contracts.kt +++ b/backend.native/tests/codegen/contracts/contracts.kt @@ -4,7 +4,7 @@ import kotlin.contracts.* open class S class P(val str: String = "P") : S() -@UseExperimental(kotlin.contracts.ExperimentalContracts::class) +@OptIn(kotlin.contracts.ExperimentalContracts::class) fun check(actual: Boolean) { contract { returns() implies actual } assertTrue(actual) diff --git a/backend.native/tests/codegen/ktype/ktype1.kt b/backend.native/tests/codegen/ktype/ktype1.kt index b6e66034816..c5649433f82 100644 --- a/backend.native/tests/codegen/ktype/ktype1.kt +++ b/backend.native/tests/codegen/ktype/ktype1.kt @@ -8,7 +8,7 @@ package codegen.ktype.ktype1 import kotlin.test.* import kotlin.reflect.* -@UseExperimental(ExperimentalStdlibApi::class) +@OptIn(ExperimentalStdlibApi::class) inline fun kType() = typeOf() inline fun kType(obj: R) = kType() diff --git a/build-tools/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy b/build-tools/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy index d50c450a81f..4f4ffb739df 100644 --- a/build-tools/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy +++ b/build-tools/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy @@ -332,7 +332,7 @@ class RunExternalTestGroup extends OldKonanTest { def experimentalSettings = findLinesWithPrefixesRemoved(text, "// !USE_EXPERIMENTAL: ") if (experimentalSettings.size() != 0) { experimentalSettings.forEach { line -> - line.split(" ").toList().forEach { flags.add("-Xuse-experimental=$it") } + line.split(" ").toList().forEach { flags.add("-Xopt-in=$it") } } } } diff --git a/endorsedLibraries/kotlinx.cli/build.gradle b/endorsedLibraries/kotlinx.cli/build.gradle index 65d8c4cf074..478c1c4d540 100644 --- a/endorsedLibraries/kotlinx.cli/build.gradle +++ b/endorsedLibraries/kotlinx.cli/build.gradle @@ -60,7 +60,7 @@ kotlin { jvm().compilations.all { kotlinOptions { - freeCompilerArgs = ["-Xuse-experimental=kotlinx.cli.ExperimentalCli"] + freeCompilerArgs = ["-Xopt-in=kotlinx.cli.ExperimentalCli"] suppressWarnings = true } } @@ -92,8 +92,8 @@ targetList.each { target -> args = [*konanArgs, '-output', project.file("build/${target}KotlinxCli"), '-produce', 'library', '-module-name', 'kotlinx-cli', '-XXLanguage:+AllowContractsForCustomFunctions', - '-Xmulti-platform', '-Xuse-experimental=kotlinx.cli.ExperimentalCli', - '-Xuse-experimental=kotlin.ExperimentalMultiplatform', + '-Xmulti-platform', '-Xopt-in=kotlinx.cli.ExperimentalCli', + '-Xopt-in=kotlin.ExperimentalMultiplatform', '-Xallow-result-return-type', commonSrc.absolutePath, "-Xcommon-sources=${commonSrc.absolutePath}", diff --git a/performance/shared/src/main/kotlin/org/jetbrains/benchmarksLauncher/launcher.kt b/performance/shared/src/main/kotlin/org/jetbrains/benchmarksLauncher/launcher.kt index 1ffbf0918f0..60526df130f 100644 --- a/performance/shared/src/main/kotlin/org/jetbrains/benchmarksLauncher/launcher.kt +++ b/performance/shared/src/main/kotlin/org/jetbrains/benchmarksLauncher/launcher.kt @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -@file:UseExperimental(ExperimentalCli::class) +@file:OptIn(ExperimentalCli::class) package org.jetbrains.benchmarksLauncher import org.jetbrains.report.BenchmarkResult diff --git a/runtime/src/main/kotlin/kotlin/collections/Arrays.kt b/runtime/src/main/kotlin/kotlin/collections/Arrays.kt index 6768b62d610..9e206f9f250 100644 --- a/runtime/src/main/kotlin/kotlin/collections/Arrays.kt +++ b/runtime/src/main/kotlin/kotlin/collections/Arrays.kt @@ -45,7 +45,7 @@ public inline fun Array.subarrayContentToString(offset: Int, length: * If any of arrays contains itself on any nesting level the behavior is undefined. */ @SinceKotlin("1.1") -@UseExperimental(ExperimentalUnsignedTypes::class) +@OptIn(ExperimentalUnsignedTypes::class) internal fun Array?.contentDeepHashCodeImpl(): Int { if (this == null) return 0 var result = 1 diff --git a/runtime/src/main/kotlin/kotlin/collections/HashMap.kt b/runtime/src/main/kotlin/kotlin/collections/HashMap.kt index 7c982e0c464..a8a07d23590 100644 --- a/runtime/src/main/kotlin/kotlin/collections/HashMap.kt +++ b/runtime/src/main/kotlin/kotlin/collections/HashMap.kt @@ -512,10 +512,10 @@ actual class HashMap private constructor( const val INITIAL_MAX_PROBE_DISTANCE = 2 const val TOMBSTONE = -1 - @UseExperimental(ExperimentalStdlibApi::class) + @OptIn(ExperimentalStdlibApi::class) fun computeHashSize(capacity: Int): Int = (capacity.coerceAtLeast(1) * 3).takeHighestOneBit() - @UseExperimental(ExperimentalStdlibApi::class) + @OptIn(ExperimentalStdlibApi::class) fun computeShift(hashSize: Int): Int = hashSize.countLeadingZeroBits() + 1 } diff --git a/runtime/src/main/kotlin/kotlin/reflect/AssociatedObjects.kt b/runtime/src/main/kotlin/kotlin/reflect/AssociatedObjects.kt index 1e3102a1d06..7a2af7efd65 100644 --- a/runtime/src/main/kotlin/kotlin/reflect/AssociatedObjects.kt +++ b/runtime/src/main/kotlin/kotlin/reflect/AssociatedObjects.kt @@ -11,10 +11,10 @@ import kotlin.native.internal.* * The experimental marker for associated objects API. * * Any usage of a declaration annotated with `@ExperimentalAssociatedObjects` must be accepted either by - * annotating that usage with the [UseExperimental] annotation, e.g. `@UseExperimental(ExperimentalAssociatedObjects::class)`, - * or by using the compiler argument `-Xuse-experimental=kotlin.reflect.ExperimentalAssociatedObjects`. + * annotating that usage with the [OptIn] annotation, e.g. `@OptIn(ExperimentalAssociatedObjects::class)`, + * or by using the compiler argument `-Xopt-in=kotlin.reflect.ExperimentalAssociatedObjects`. */ -@Experimental(level = Experimental.Level.ERROR) +@RequiresOptIn(level = RequiresOptIn.Level.ERROR) @Retention(value = AnnotationRetention.BINARY) public annotation class ExperimentalAssociatedObjects diff --git a/runtime/src/main/kotlin/kotlin/text/StringBuilder.kt b/runtime/src/main/kotlin/kotlin/text/StringBuilder.kt index c3f509e673e..2bb953fd712 100644 --- a/runtime/src/main/kotlin/kotlin/text/StringBuilder.kt +++ b/runtime/src/main/kotlin/kotlin/text/StringBuilder.kt @@ -58,7 +58,7 @@ actual class StringBuilder private constructor ( return append(toAppend, 0, toAppend.length) } - @UseExperimental(ExperimentalStdlibApi::class) + @OptIn(ExperimentalStdlibApi::class) actual override fun append(value: CharSequence?, startIndex: Int, endIndex: Int): StringBuilder = this.appendRange(value, startIndex, endIndex) /** @@ -319,7 +319,7 @@ actual class StringBuilder private constructor ( * * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder. */ - @UseExperimental(ExperimentalStdlibApi::class) + @OptIn(ExperimentalStdlibApi::class) actual fun insert(index: Int, value: CharSequence?): StringBuilder { // Kotlin/JVM inserts the "null" string if the argument is null. val toInsert = value ?: "null" @@ -887,7 +887,7 @@ public inline fun StringBuilder.setLength(l: Int) = this.setLength(newLength = l * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [start] or [end] is out of range of the [csq] character sequence indices or when `start > end`. * @throws IndexOutOfBoundsException if [index] is less than zero or greater than the length of this string builder. */ -@UseExperimental(ExperimentalStdlibApi::class) +@OptIn(ExperimentalStdlibApi::class) @kotlin.internal.InlineOnly public inline fun StringBuilder.insert(index: Int, csq: CharSequence?, start: Int, end: Int): StringBuilder = this.insertRange(index, csq, start, end) @@ -905,6 +905,6 @@ public inline fun StringBuilder.setCharAt(index: Int, value: Char) = this.set(in * * @throws IndexOutOfBoundsException if [index] is out of bounds of this string builder. */ -@UseExperimental(ExperimentalStdlibApi::class) +@OptIn(ExperimentalStdlibApi::class) @kotlin.internal.InlineOnly public inline fun StringBuilder.deleteCharAt(index: Int) = this.deleteAt(index) diff --git a/runtime/src/main/kotlin/kotlin/text/regex/CharClass.kt b/runtime/src/main/kotlin/kotlin/text/regex/CharClass.kt index fc4186e4adf..0915c5cf8a6 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/CharClass.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/CharClass.kt @@ -485,7 +485,7 @@ internal class CharClass(val ignoreCase: Boolean = false, negative: Boolean = fa } } - @UseExperimental(ExperimentalStdlibApi::class) + @OptIn(ExperimentalStdlibApi::class) override val instance: AbstractCharClass get() { @@ -519,7 +519,7 @@ internal class CharClass(val ignoreCase: Boolean = false, negative: Boolean = fa } } - @UseExperimental(ExperimentalStdlibApi::class) + @OptIn(ExperimentalStdlibApi::class) //for debugging purposes only override fun toString(): String { val temp = StringBuilder() diff --git a/tools/benchmarksAnalyzer/src/main/kotlin/main.kt b/tools/benchmarksAnalyzer/src/main/kotlin/main.kt index b0f05949abb..7db7abfd088 100644 --- a/tools/benchmarksAnalyzer/src/main/kotlin/main.kt +++ b/tools/benchmarksAnalyzer/src/main/kotlin/main.kt @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -@file:UseExperimental(ExperimentalCli::class) +@file:OptIn(ExperimentalCli::class) import org.jetbrains.analyzer.sendGetRequest import org.jetbrains.analyzer.readFile import org.jetbrains.analyzer.SummaryBenchmarksReport