diff --git a/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/CompileServiceClientSideImpl.kt b/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/CompileServiceClientSideImpl.kt index e13d12550ac..6d4979f8494 100644 --- a/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/CompileServiceClientSideImpl.kt +++ b/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/CompileServiceClientSideImpl.kt @@ -48,6 +48,7 @@ class CompileServiceClientSideImpl( override fun startKeepAlives() { val keepAliveMessage = Server.KeepAliveMessage() + @OptIn(ObsoleteCoroutinesApi::class) GlobalScope.async(newSingleThreadContext("keepAliveThread")) { delay(KEEPALIVE_PERIOD * 4) while (true) { diff --git a/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/NetworkUtils.kt b/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/NetworkUtils.kt index d857f774e91..05cd779f9d4 100644 --- a/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/NetworkUtils.kt +++ b/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/NetworkUtils.kt @@ -5,24 +5,25 @@ package org.jetbrains.kotlin.daemon.common.experimental -import io.ktor.network.selector.ActorSelectorManager -import io.ktor.network.sockets.aSocket -import kotlinx.coroutines.* +import io.ktor.network.selector.* +import io.ktor.network.sockets.* +import io.ktor.util.* +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.runBlocking +import org.jetbrains.kotlin.daemon.common.LoopbackNetworkInterface import org.jetbrains.kotlin.daemon.common.experimental.socketInfrastructure.ServerSocketWrapper -import org.jetbrains.kotlin.daemon.common.* import java.io.IOException import java.io.Serializable -import java.net.* -import java.rmi.server.RMIClientSocketFactory -import java.rmi.server.RMIServerSocketFactory +import java.net.InetAddress +import java.net.InetSocketAddress import java.util.* - object LoopbackNetworkInterfaceKtor { val serverLoopbackSocketFactoryKtor by lazy { ServerLoopbackSocketFactoryKtor() } val clientLoopbackSocketFactoryKtor by lazy { ClientLoopbackSocketFactoryKtor() } + @KtorExperimentalAPI val selectorMgr = ActorSelectorManager(Dispatchers.IO) class ServerLoopbackSocketFactoryKtor : Serializable { @@ -30,6 +31,7 @@ object LoopbackNetworkInterfaceKtor { override fun hashCode(): Int = super.hashCode() @Throws(IOException::class) + @OptIn(KtorExperimentalAPI::class) fun createServerSocket(port: Int) = aSocket(selectorMgr) .tcp() @@ -37,6 +39,7 @@ object LoopbackNetworkInterfaceKtor { } class ClientLoopbackSocketFactoryKtor : LoopbackNetworkInterface.AbstractClientLoopbackSocketFactory() { + @OptIn(KtorExperimentalAPI::class) override fun socketCreate(host: String, port: Int): io.ktor.network.sockets.Socket = runBlocking { aSocket(selectorMgr).tcp().connect(InetSocketAddress(host, port)) } } @@ -63,4 +66,4 @@ fun findPortForSocket(attempts: Int, portRangeStart: Int, portRangeEnd: Int): Se } } throw IllegalStateException("Cannot find free socketPort in $attempts attempts", lastException) -} \ No newline at end of file +} diff --git a/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/socketInfrastructure/Client.kt b/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/socketInfrastructure/Client.kt index 8735f7b93d2..c353722e4bf 100644 --- a/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/socketInfrastructure/Client.kt +++ b/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/socketInfrastructure/Client.kt @@ -1,3 +1,8 @@ +/* + * Copyright 2010-2020 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.daemon.common.experimental.socketInfrastructure import io.ktor.network.sockets.Socket @@ -114,6 +119,7 @@ abstract class DefaultAuthorizableClient( return actualResult as T } + @OptIn(ObsoleteCoroutinesApi::class, ExperimentalCoroutinesApi::class) override suspend fun connectToServer() { writeActor = GlobalScope.actor(capacity = Channel.UNLIMITED) { diff --git a/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/socketInfrastructure/Server.kt b/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/socketInfrastructure/Server.kt index 8f23176183c..01c8f2d14fa 100644 --- a/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/socketInfrastructure/Server.kt +++ b/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/socketInfrastructure/Server.kt @@ -1,3 +1,8 @@ +/* + * Copyright 2010-2020 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.daemon.common.experimental.socketInfrastructure import io.ktor.network.sockets.ServerSocket diff --git a/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/socketInfrastructure/StreamWrappers.kt b/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/socketInfrastructure/StreamWrappers.kt index a15ab3ae61f..cd0c7aa213f 100644 --- a/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/socketInfrastructure/StreamWrappers.kt +++ b/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/socketInfrastructure/StreamWrappers.kt @@ -1,9 +1,15 @@ +/* + * Copyright 2010-2020 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.daemon.common.experimental.socketInfrastructure -import io.ktor.network.sockets.Socket -import io.ktor.network.sockets.openReadChannel -import io.ktor.network.sockets.openWriteChannel -import kotlinx.coroutines.* +import io.ktor.network.sockets.* +import kotlinx.coroutines.CompletableDeferred +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.ObsoleteCoroutinesApi import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.channels.actor import kotlinx.coroutines.channels.consumeEach @@ -45,6 +51,7 @@ class ByteReadChannelWrapper(readChannel: ByteReadChannel, private val log: Logg } // TODO : replace GlobalScope with something more explicit here and below. + @OptIn(ObsoleteCoroutinesApi::class, ExperimentalCoroutinesApi::class) private val readActor = GlobalScope.actor(capacity = Channel.UNLIMITED) { consumeEach { message -> if (!readChannel.isClosedForRead) { @@ -145,6 +152,7 @@ class ByteWriteChannelWrapper(writeChannel: ByteWriteChannel, private val log: L } } + @OptIn(ObsoleteCoroutinesApi::class, ExperimentalCoroutinesApi::class) private val writeActor = GlobalScope.actor(capacity = Channel.UNLIMITED) { consumeEach { message -> if (!writeChannel.isClosedForWrite) { diff --git a/compiler/daemon/daemon-tests/test/org/jetbrains/kotlin/daemon/experimental/unit/ClientSerializationTest.kt b/compiler/daemon/daemon-tests/test/org/jetbrains/kotlin/daemon/experimental/unit/ClientSerializationTest.kt index 030141c7b2a..b105ad13513 100644 --- a/compiler/daemon/daemon-tests/test/org/jetbrains/kotlin/daemon/experimental/unit/ClientSerializationTest.kt +++ b/compiler/daemon/daemon-tests/test/org/jetbrains/kotlin/daemon/experimental/unit/ClientSerializationTest.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.daemon.experimental.unit import io.ktor.network.sockets.aSocket +import io.ktor.util.* import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.async import kotlinx.coroutines.runBlocking @@ -24,6 +25,7 @@ import java.io.ObjectOutputStream import java.net.InetSocketAddress import java.util.logging.Logger +@OptIn(KtorExperimentalAPI::class) class TestServer(val serverPort: Int = 6999) { private val serverSocket = aSocket(selectorMgr).tcp().bind(InetSocketAddress(serverPort)) private val log = Logger.getLogger("TestServer") diff --git a/compiler/daemon/src/org/jetbrains/kotlin/daemon/experimental/CompileServiceServerSideImpl.kt b/compiler/daemon/src/org/jetbrains/kotlin/daemon/experimental/CompileServiceServerSideImpl.kt index cfdbfc8f78d..2beea02c6bd 100644 --- a/compiler/daemon/src/org/jetbrains/kotlin/daemon/experimental/CompileServiceServerSideImpl.kt +++ b/compiler/daemon/src/org/jetbrains/kotlin/daemon/experimental/CompileServiceServerSideImpl.kt @@ -10,15 +10,13 @@ package org.jetbrains.kotlin.daemon.experimental import com.intellij.openapi.util.Disposer import com.intellij.openapi.vfs.impl.ZipHandler import com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem +import io.ktor.network.sockets.* import kotlinx.coroutines.* import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.channels.actor import kotlinx.coroutines.channels.consumeEach import org.jetbrains.kotlin.cli.common.CLICompiler -import org.jetbrains.kotlin.cli.common.ExitCode -import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments -import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments -import org.jetbrains.kotlin.cli.common.messages.MessageCollector +import org.jetbrains.kotlin.cli.common.KOTLIN_COMPILER_ENVIRONMENT_KEEPALIVE_PROPERTY import org.jetbrains.kotlin.cli.common.repl.ReplCheckResult import org.jetbrains.kotlin.cli.common.repl.ReplCodeLine import org.jetbrains.kotlin.cli.common.repl.ReplCompileResult @@ -29,7 +27,10 @@ import org.jetbrains.kotlin.cli.metadata.K2MetadataCompiler import org.jetbrains.kotlin.config.Services import org.jetbrains.kotlin.daemon.CompileServiceImplBase import org.jetbrains.kotlin.daemon.CompilerSelector +import org.jetbrains.kotlin.daemon.EventManager import org.jetbrains.kotlin.daemon.common.* +import org.jetbrains.kotlin.daemon.common.experimental.* +import org.jetbrains.kotlin.daemon.common.experimental.socketInfrastructure.* import org.jetbrains.kotlin.daemon.experimental.CompileServiceTaskScheduler.* import org.jetbrains.kotlin.daemon.nowSeconds import org.jetbrains.kotlin.daemon.report.experimental.CompileServicesFacadeMessageCollector @@ -45,12 +46,6 @@ import java.util.concurrent.TimeUnit import java.util.logging.Level import java.util.logging.Logger import kotlin.concurrent.schedule -import org.jetbrains.kotlin.daemon.common.experimental.socketInfrastructure.* -import org.jetbrains.kotlin.daemon.common.experimental.* -import io.ktor.network.sockets.* -import org.jetbrains.kotlin.cli.common.KOTLIN_COMPILER_ENVIRONMENT_KEEPALIVE_PROPERTY -import org.jetbrains.kotlin.daemon.EventManager -import org.jetbrains.kotlin.daemon.report.DaemonMessageReporter // TODO: this classes should replace their non-experimental versions eventually. @@ -79,6 +74,7 @@ private class CompileServiceTaskScheduler(log: Logger) { fun isShutdownActionInProgress() = shutdownActionInProgress + @OptIn(ObsoleteCoroutinesApi::class, ExperimentalCoroutinesApi::class) private val queriesActor = GlobalScope.actor(capacity = Channel.UNLIMITED) { var currentTaskId = 0 var shutdownTask: ExclusiveTask? = null diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/ConeIntegerLiteralTypeImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/ConeIntegerLiteralTypeImpl.kt index 9def441fddf..3a438afdad2 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/ConeIntegerLiteralTypeImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/ConeIntegerLiteralTypeImpl.kt @@ -71,6 +71,7 @@ class ConeIntegerLiteralTypeImpl : ConeIntegerLiteralType { return approximatedType.withNullability(nullability) } + @OptIn(ExperimentalUnsignedTypes::class) companion object { fun createType(classId: ClassId): ConeClassLikeType { return ConeClassLikeTypeImpl(ConeClassLikeLookupTagImpl(classId), emptyArray(), false) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/loops/ProgressionType.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/loops/ProgressionType.kt index db1d41970a7..db511cf7f5b 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/loops/ProgressionType.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/loops/ProgressionType.kt @@ -201,6 +201,7 @@ internal class UIntProgressionType(symbols: Symbols) : unsignedType = symbols.uInt!!.defaultType, unsignedConversionFunction = symbols.toUIntByExtensionReceiver.getValue(symbols.int) ) { + @OptIn(ExperimentalUnsignedTypes::class) override fun DeclarationIrBuilder.minValueExpression() = irInt(UInt.MIN_VALUE.toInt()) override fun DeclarationIrBuilder.zeroStepExpression() = irInt(0) @@ -218,6 +219,7 @@ internal class ULongProgressionType(symbols: Symbols) : unsignedType = symbols.uLong!!.defaultType, unsignedConversionFunction = symbols.toULongByExtensionReceiver.getValue(symbols.long) ) { + @OptIn(ExperimentalUnsignedTypes::class) override fun DeclarationIrBuilder.minValueExpression() = irLong(ULong.MIN_VALUE.toLong()) override fun DeclarationIrBuilder.zeroStepExpression() = irLong(0) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/optimizations/FoldConstantLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/optimizations/FoldConstantLowering.kt index 98cd1115da7..1014850784d 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/optimizations/FoldConstantLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/optimizations/FoldConstantLowering.kt @@ -222,6 +222,7 @@ class FoldConstantLowering( } if (const.type.isUnsigned()) { + @OptIn(ExperimentalUnsignedTypes::class) when (val kind = const.kind) { is IrConstKind.Byte -> return kind.valueOf(const).toUByte().toString() diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/CityHash.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/CityHash.kt index ae150d32a4c..b5362f13580 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/CityHash.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/CityHash.kt @@ -210,5 +210,6 @@ public fun cityHash64(s: ByteArray, pos: Int = 0, len: Int = s.size): ULong { ) } -fun String.cityHash64() = cityHash64(this.toByteArray()).toLong() - +@OptIn(ExperimentalUnsignedTypes::class) +fun String.cityHash64(): Long = + cityHash64(this.toByteArray()).toLong() diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/constants/PrimitiveTypeUtil.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/constants/PrimitiveTypeUtil.kt index 3cce3a0550a..458d8f3b384 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/constants/PrimitiveTypeUtil.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/constants/PrimitiveTypeUtil.kt @@ -23,7 +23,7 @@ internal fun KotlinType.minValue(): Long { } } -@ExperimentalUnsignedTypes +@OptIn(ExperimentalUnsignedTypes::class) internal fun KotlinType.maxValue(): Long { return when { KotlinBuiltIns.isByte(this) -> Byte.MAX_VALUE.toLong() @@ -63,4 +63,4 @@ internal val ModuleDescriptor.allUnsignedLiteralTypes: Collection ) } else { emptyList() - } \ No newline at end of file + } diff --git a/libraries/reflect/api/build.gradle b/libraries/reflect/api/build.gradle index b7aa8a78e78..19fcbb1a5e8 100644 --- a/libraries/reflect/api/build.gradle +++ b/libraries/reflect/api/build.gradle @@ -47,6 +47,7 @@ compileKotlin { "-Xnormalize-constructor-calls=enable", "-Xno-optimized-callable-references", "-Xno-kotlin-nothing-value-exception", + "-Xopt-in=kotlin.RequiresOptIn", "-module-name", "kotlin-reflection"] } } diff --git a/libraries/stdlib/jvm/src/kotlin/collections/builders/MapBuilder.kt b/libraries/stdlib/jvm/src/kotlin/collections/builders/MapBuilder.kt index 221761596a8..01c04cb6c30 100644 --- a/libraries/stdlib/jvm/src/kotlin/collections/builders/MapBuilder.kt +++ b/libraries/stdlib/jvm/src/kotlin/collections/builders/MapBuilder.kt @@ -436,10 +436,10 @@ internal class MapBuilder private constructor( private const val INITIAL_MAX_PROBE_DISTANCE = 2 private const val TOMBSTONE = -1 - @UseExperimental(ExperimentalStdlibApi::class) + @OptIn(ExperimentalStdlibApi::class) private fun computeHashSize(capacity: Int): Int = (capacity.coerceAtLeast(1) * 3).takeHighestOneBit() - @UseExperimental(ExperimentalStdlibApi::class) + @OptIn(ExperimentalStdlibApi::class) private fun computeShift(hashSize: Int): Int = hashSize.countLeadingZeroBits() + 1 }