From b5a0daabc372b2bca25cb7f0b28d676847d9ed76 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Sat, 18 Jan 2020 04:54:46 +0300 Subject: [PATCH] Extract kotlin.coroutines.experimental API into compat artifact Add public API dump for kotlin-coroutines-experimental-compat #KT-36083 --- build.gradle.kts | 3 +- libraries/stdlib/common/build.gradle | 2 +- .../coroutines-experimental/build.gradle.kts | 94 ++++++++++++ .../coroutines-experimental/jvm/test/utils.kt | 15 ++ libraries/stdlib/jdk7/build.gradle | 1 + libraries/stdlib/jdk8/build.gradle | 1 + libraries/stdlib/js-v1/build.gradle | 10 +- libraries/stdlib/jvm/build.gradle | 7 +- .../jvm/test/coroutines/CoroutinesTest.kt | 5 +- .../build.gradle | 1 + .../kotlin-coroutines-experimental-compat.txt | 135 ++++++++++++++++++ .../kotlin-stdlib-runtime-merged.txt | 135 ------------------ .../RuntimePublicAPITest.kt | 4 + prepare/compiler/build.gradle.kts | 2 + settings.gradle | 2 + 15 files changed, 268 insertions(+), 149 deletions(-) create mode 100644 libraries/stdlib/coroutines-experimental/build.gradle.kts create mode 100644 libraries/stdlib/coroutines-experimental/jvm/test/utils.kt create mode 100644 libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-coroutines-experimental-compat.txt diff --git a/build.gradle.kts b/build.gradle.kts index a761683d1a7..ece204abfd7 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -273,7 +273,8 @@ val coreLibProjects = listOfNotNull( ":kotlin-test:kotlin-test-junit5", ":kotlin-test:kotlin-test-testng", ":kotlin-test:kotlin-test-js".takeIf { !kotlinBuildProperties.isInJpsBuildIdeaSync }, - ":kotlin-reflect" + ":kotlin-reflect", + ":kotlin-coroutines-experimental-compat" ) val gradlePluginProjects = listOf( diff --git a/libraries/stdlib/common/build.gradle b/libraries/stdlib/common/build.gradle index dc8941ccd21..75166379a83 100644 --- a/libraries/stdlib/common/build.gradle +++ b/libraries/stdlib/common/build.gradle @@ -28,7 +28,7 @@ sourceSets { } coroutinesExperimental { kotlin { - srcDir '../coroutines-experimental/src' +// srcDir '../coroutines-experimental/src' } } } diff --git a/libraries/stdlib/coroutines-experimental/build.gradle.kts b/libraries/stdlib/coroutines-experimental/build.gradle.kts new file mode 100644 index 00000000000..903d171b364 --- /dev/null +++ b/libraries/stdlib/coroutines-experimental/build.gradle.kts @@ -0,0 +1,94 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +plugins { + kotlin("jvm") + id("jps-compatible") +} + +publish() + +description = "Kotlin pre 1.3 experimental coroutines compatibility library" + +jvmTarget = "1.6" +javaHome = rootProject.extra["JDK_16"] as String + + +sourceSets { + "main" { + java.srcDirs("src", "jvm/src") + } + "test" { + java.srcDirs("jvm/test") + } + "migrationTest" { + if(!kotlinBuildProperties.isInIdeaSync) + java.srcDirs("jvm/test") + } +} +val migrationTestSourceSet = sourceSets["migrationTest"] + +configurations { + "migrationTestImplementation" { + extendsFrom(testImplementation.get()) + } +} + +dependencies { + api(kotlinStdlib()) + testImplementation(project(":kotlin-test:kotlin-test-junit")) + "migrationTestImplementation"(sourceSets.main.get().output) +} + +tasks { + val compileKotlin by existing(KotlinCompile::class) { + kotlinOptions { + languageVersion = "1.3" + apiVersion = "1.3" + freeCompilerArgs = listOf( + "-Xmulti-platform", + "-Xallow-kotlin-package", + "-Xmultifile-parts-inherit", + "-Xuse-experimental=kotlin.contracts.ExperimentalContracts", + "-Xuse-experimental=kotlin.Experimental", + "-Xcoroutines=enable", + "-XXLanguage:-ReleaseCoroutines", + "-Xno-use-ir", + "-module-name", "kotlin-coroutines-experimental-compat" + ) + } + } + val compileTestKotlin by existing(KotlinCompile::class) { + kotlinOptions { + languageVersion = "1.2" + apiVersion = "1.2" + freeCompilerArgs = listOf("-Xcoroutines=enable") + } + } + val compileMigrationTestKotlin by existing(KotlinCompile::class) { + kotlinOptions { + languageVersion = "1.3" + apiVersion = "1.3" + freeCompilerArgs = listOf() + } + } + + val migrationTestClasses by existing + val migrationTest by creating(Test::class) { + dependsOn(migrationTestClasses) + group = "verification" + testClassesDirs = migrationTestSourceSet.output.classesDirs + classpath = migrationTestSourceSet.runtimeClasspath + } + + val check by existing { + dependsOn(migrationTest) + } + + + val jar by existing(Jar::class) { + callGroovy("manifestAttributes", manifest, project, "Main") + } +} + +sourcesJar() +javadocJar() diff --git a/libraries/stdlib/coroutines-experimental/jvm/test/utils.kt b/libraries/stdlib/coroutines-experimental/jvm/test/utils.kt new file mode 100644 index 00000000000..d83a4ebe5d9 --- /dev/null +++ b/libraries/stdlib/coroutines-experimental/jvm/test/utils.kt @@ -0,0 +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 test + +import kotlin.test.* + +inline fun assertStaticAndRuntimeTypeIs(value: T) { + @Suppress("USELESS_CAST") + if ((value as Any?) !is T) { + fail("Expected value $value to have ${T::class} type") + } +} \ No newline at end of file diff --git a/libraries/stdlib/jdk7/build.gradle b/libraries/stdlib/jdk7/build.gradle index a081d3fff2f..25252395f4f 100644 --- a/libraries/stdlib/jdk7/build.gradle +++ b/libraries/stdlib/jdk7/build.gradle @@ -46,6 +46,7 @@ configurations { dependencies { compile project(':kotlin-stdlib') testCompile project(':kotlin-test:kotlin-test-junit') + testCompile project(':kotlin-coroutines-experimental-compat') } jar { diff --git a/libraries/stdlib/jdk8/build.gradle b/libraries/stdlib/jdk8/build.gradle index d89a26b6451..fc7a430c5db 100644 --- a/libraries/stdlib/jdk8/build.gradle +++ b/libraries/stdlib/jdk8/build.gradle @@ -16,6 +16,7 @@ dependencies { compile project(':kotlin-stdlib') compile project(':kotlin-stdlib-jdk7') testCompile project(':kotlin-test:kotlin-test-junit') + testCompile project(':kotlin-coroutines-experimental-compat') } sourceSets { diff --git a/libraries/stdlib/js-v1/build.gradle b/libraries/stdlib/js-v1/build.gradle index e67b7949b1f..7ddabddf9e7 100644 --- a/libraries/stdlib/js-v1/build.gradle +++ b/libraries/stdlib/js-v1/build.gradle @@ -70,7 +70,7 @@ sourceSets { coroutinesExperimental { kotlin { - srcDir coroutinesExpJsSrcDir +// srcDir coroutinesExpJsSrcDir } } } @@ -206,8 +206,8 @@ task compileJs(type: NoDebugJavaExec) { doFirst { args = [jsOutputFile, rootDir, "$jsSrcDir/wrapper.js"] + inputFiles.collect { it.path }.sort() + (compileBuiltinsKotlin2Js.outputs.files.collect { it.path }.sort() + - compileKotlin2Js.outputs.files.collect { it.path }.sort() + - compileCoroutinesExperimentalKotlin2Js.outputs.files.collect { it.path }.sort()).findAll { + compileKotlin2Js.outputs.files.collect { it.path }.sort() /*+ + compileCoroutinesExperimentalKotlin2Js.outputs.files.collect { it.path }.sort()*/).findAll { it.endsWith(".js") && !it.endsWith(".meta.js") } } @@ -253,8 +253,8 @@ task compileJs(type: NoDebugJavaExec) { sourceMapFile.text = groovy.json.JsonOutput.toJson(sourceMap) - file(jsOutputMetaFile).text = file(compileKotlin2Js.outputFile.path.replaceAll('\\.js$', '.meta.js')).text + - file(compileCoroutinesExperimentalKotlin2Js.outputFile.path.replaceAll('\\.js$', '.meta.js')).text + file(jsOutputMetaFile).text = file(compileKotlin2Js.outputFile.path.replaceAll('\\.js$', '.meta.js')).text /*+ + file(compileCoroutinesExperimentalKotlin2Js.outputFile.path.replaceAll('\\.js$', '.meta.js')).text*/ } } diff --git a/libraries/stdlib/jvm/build.gradle b/libraries/stdlib/jvm/build.gradle index b518018bf50..f18bd399457 100644 --- a/libraries/stdlib/jvm/build.gradle +++ b/libraries/stdlib/jvm/build.gradle @@ -26,18 +26,18 @@ sourceSets { } coroutinesExperimental { kotlin { - srcDir '../coroutines-experimental/jvm/src' +// srcDir '../coroutines-experimental/jvm/src' } } coroutinesExperimentalTest { kotlin { - srcDir '../coroutines-experimental/jvm/test' +// srcDir '../coroutines-experimental/jvm/test' } } coroutinesExperimentalMigrationTest { kotlin { if(!BuildPropertiesKt.getKotlinBuildProperties(project).inIdeaSync) { - srcDir '../coroutines-experimental/jvm/test' +// srcDir '../coroutines-experimental/jvm/test' } } } @@ -77,6 +77,7 @@ dependencies { testCompile project(':kotlin-test:kotlin-test-junit') testCompile sourceSets.coroutinesExperimental.output + testCompile project(':kotlin-coroutines-experimental-compat') coroutinesExperimentalCompile sourceSets.main.output coroutinesExperimentalTestCompile sourceSets.test.output diff --git a/libraries/stdlib/jvm/test/coroutines/CoroutinesTest.kt b/libraries/stdlib/jvm/test/coroutines/CoroutinesTest.kt index f8e3b5315f1..99b79a4b77f 100644 --- a/libraries/stdlib/jvm/test/coroutines/CoroutinesTest.kt +++ b/libraries/stdlib/jvm/test/coroutines/CoroutinesTest.kt @@ -1,15 +1,12 @@ /* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. + * 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. */ -@file:Suppress("ObsoleteExperimentalCoroutines") - package test.coroutines import java.util.concurrent.Semaphore import kotlin.coroutines.* -import kotlin.coroutines.experimental.startCoroutine import kotlin.test.* /** diff --git a/libraries/tools/binary-compatibility-validator/build.gradle b/libraries/tools/binary-compatibility-validator/build.gradle index 7089998962c..0d604f7cef0 100644 --- a/libraries/tools/binary-compatibility-validator/build.gradle +++ b/libraries/tools/binary-compatibility-validator/build.gradle @@ -20,6 +20,7 @@ dependencies { testArtifacts project(':kotlin-stdlib-jdk7') testArtifacts project(':kotlin-stdlib-jdk8') testArtifacts project(':kotlin-reflect') + testArtifacts project(':kotlin-coroutines-experimental-compat') } pill { diff --git a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-coroutines-experimental-compat.txt b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-coroutines-experimental-compat.txt new file mode 100644 index 00000000000..61b2f7507ff --- /dev/null +++ b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-coroutines-experimental-compat.txt @@ -0,0 +1,135 @@ +public abstract class kotlin/coroutines/experimental/AbstractCoroutineContextElement : kotlin/coroutines/experimental/CoroutineContext$Element { + public fun (Lkotlin/coroutines/experimental/CoroutineContext$Key;)V + public fun fold (Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; + public fun get (Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext$Element; + public fun getKey ()Lkotlin/coroutines/experimental/CoroutineContext$Key; + public fun minusKey (Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext; + public fun plus (Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext; +} + +public abstract interface class kotlin/coroutines/experimental/Continuation { + public abstract fun getContext ()Lkotlin/coroutines/experimental/CoroutineContext; + public abstract fun resume (Ljava/lang/Object;)V + public abstract fun resumeWithException (Ljava/lang/Throwable;)V +} + +public abstract interface class kotlin/coroutines/experimental/ContinuationInterceptor : kotlin/coroutines/experimental/CoroutineContext$Element { + public static final field Key Lkotlin/coroutines/experimental/ContinuationInterceptor$Key; + public abstract fun interceptContinuation (Lkotlin/coroutines/experimental/Continuation;)Lkotlin/coroutines/experimental/Continuation; +} + +public final class kotlin/coroutines/experimental/ContinuationInterceptor$DefaultImpls { + public static fun fold (Lkotlin/coroutines/experimental/ContinuationInterceptor;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; + public static fun get (Lkotlin/coroutines/experimental/ContinuationInterceptor;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext$Element; + public static fun minusKey (Lkotlin/coroutines/experimental/ContinuationInterceptor;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext; + public static fun plus (Lkotlin/coroutines/experimental/ContinuationInterceptor;Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext; +} + +public final class kotlin/coroutines/experimental/ContinuationInterceptor$Key : kotlin/coroutines/experimental/CoroutineContext$Key { +} + +public abstract interface class kotlin/coroutines/experimental/CoroutineContext { + public abstract fun fold (Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; + public abstract fun get (Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext$Element; + public abstract fun minusKey (Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext; + public abstract fun plus (Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext; +} + +public final class kotlin/coroutines/experimental/CoroutineContext$DefaultImpls { + public static fun plus (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext; +} + +public abstract interface class kotlin/coroutines/experimental/CoroutineContext$Element : kotlin/coroutines/experimental/CoroutineContext { + public abstract fun fold (Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; + public abstract fun get (Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext$Element; + public abstract fun getKey ()Lkotlin/coroutines/experimental/CoroutineContext$Key; + public abstract fun minusKey (Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext; +} + +public final class kotlin/coroutines/experimental/CoroutineContext$Element$DefaultImpls { + public static fun fold (Lkotlin/coroutines/experimental/CoroutineContext$Element;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; + public static fun get (Lkotlin/coroutines/experimental/CoroutineContext$Element;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext$Element; + public static fun minusKey (Lkotlin/coroutines/experimental/CoroutineContext$Element;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext; + public static fun plus (Lkotlin/coroutines/experimental/CoroutineContext$Element;Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext; +} + +public abstract interface class kotlin/coroutines/experimental/CoroutineContext$Key { +} + +public final class kotlin/coroutines/experimental/CoroutinesKt { + public static final fun createCoroutine (Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Lkotlin/coroutines/experimental/Continuation; + public static final fun createCoroutine (Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/experimental/Continuation;)Lkotlin/coroutines/experimental/Continuation; + public static final fun startCoroutine (Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)V + public static final fun startCoroutine (Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/experimental/Continuation;)V + public static final fun suspendCoroutine (Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object; +} + +public final class kotlin/coroutines/experimental/EmptyCoroutineContext : kotlin/coroutines/experimental/CoroutineContext { + public static final field INSTANCE Lkotlin/coroutines/experimental/EmptyCoroutineContext; + public fun fold (Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; + public fun get (Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext$Element; + public fun hashCode ()I + public fun minusKey (Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext; + public fun plus (Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext; + public fun toString ()Ljava/lang/String; +} + +public abstract interface annotation class kotlin/coroutines/experimental/RestrictsSuspension : java/lang/annotation/Annotation { +} + +public final class kotlin/coroutines/experimental/SafeContinuation : kotlin/coroutines/experimental/Continuation { + public static final field Companion Lkotlin/coroutines/experimental/SafeContinuation$Companion; + public fun (Lkotlin/coroutines/experimental/Continuation;)V + public fun getContext ()Lkotlin/coroutines/experimental/CoroutineContext; + public final fun getResult ()Ljava/lang/Object; + public fun resume (Ljava/lang/Object;)V + public fun resumeWithException (Ljava/lang/Throwable;)V +} + +public final class kotlin/coroutines/experimental/SafeContinuation$Companion { +} + +public abstract class kotlin/coroutines/experimental/SequenceBuilder { + public abstract fun yield (Ljava/lang/Object;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object; + public final fun yieldAll (Ljava/lang/Iterable;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object; + public abstract fun yieldAll (Ljava/util/Iterator;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object; + public final fun yieldAll (Lkotlin/sequences/Sequence;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object; +} + +public final class kotlin/coroutines/experimental/SequenceBuilderKt { + public static final fun buildIterator (Lkotlin/jvm/functions/Function2;)Ljava/util/Iterator; + public static final fun buildSequence (Lkotlin/jvm/functions/Function2;)Lkotlin/sequences/Sequence; +} + +public final class kotlin/coroutines/experimental/intrinsics/IntrinsicsKt { + public static final fun createCoroutineUnchecked (Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Lkotlin/coroutines/experimental/Continuation; + public static final fun createCoroutineUnchecked (Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/experimental/Continuation;)Lkotlin/coroutines/experimental/Continuation; + public static final fun getCOROUTINE_SUSPENDED ()Ljava/lang/Object; +} + +public abstract class kotlin/coroutines/experimental/jvm/internal/CoroutineImpl : kotlin/jvm/internal/Lambda, kotlin/coroutines/experimental/Continuation { + protected field completion Lkotlin/coroutines/experimental/Continuation; + protected field label I + public fun (ILkotlin/coroutines/experimental/Continuation;)V + public fun create (Ljava/lang/Object;Lkotlin/coroutines/experimental/Continuation;)Lkotlin/coroutines/experimental/Continuation; + public fun create (Lkotlin/coroutines/experimental/Continuation;)Lkotlin/coroutines/experimental/Continuation; + protected abstract fun doResume (Ljava/lang/Object;Ljava/lang/Throwable;)Ljava/lang/Object; + public fun getContext ()Lkotlin/coroutines/experimental/CoroutineContext; + public final fun getFacade ()Lkotlin/coroutines/experimental/Continuation; + public fun resume (Ljava/lang/Object;)V + public fun resumeWithException (Ljava/lang/Throwable;)V +} + +public final class kotlin/coroutines/experimental/jvm/internal/CoroutineIntrinsics { + public static final fun normalizeContinuation (Lkotlin/coroutines/experimental/Continuation;)Lkotlin/coroutines/experimental/Continuation; +} + +public final class kotlin/coroutines/experimental/migration/CoroutinesMigrationKt { + public static final fun toContinuation (Lkotlin/coroutines/experimental/Continuation;)Lkotlin/coroutines/Continuation; + public static final fun toContinuationInterceptor (Lkotlin/coroutines/experimental/ContinuationInterceptor;)Lkotlin/coroutines/ContinuationInterceptor; + public static final fun toCoroutineContext (Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/CoroutineContext; + public static final fun toExperimentalContinuation (Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/experimental/Continuation; + public static final fun toExperimentalContinuationInterceptor (Lkotlin/coroutines/ContinuationInterceptor;)Lkotlin/coroutines/experimental/ContinuationInterceptor; + public static final fun toExperimentalCoroutineContext (Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext; +} + diff --git a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt index 9921108062b..07cf4f61b8a 100644 --- a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt +++ b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt @@ -2774,141 +2774,6 @@ public final class kotlin/coroutines/SafeContinuation : kotlin/coroutines/Contin public fun toString ()Ljava/lang/String; } -public abstract class kotlin/coroutines/experimental/AbstractCoroutineContextElement : kotlin/coroutines/experimental/CoroutineContext$Element { - public fun (Lkotlin/coroutines/experimental/CoroutineContext$Key;)V - public fun fold (Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; - public fun get (Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext$Element; - public fun getKey ()Lkotlin/coroutines/experimental/CoroutineContext$Key; - public fun minusKey (Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext; - public fun plus (Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext; -} - -public abstract interface class kotlin/coroutines/experimental/Continuation { - public abstract fun getContext ()Lkotlin/coroutines/experimental/CoroutineContext; - public abstract fun resume (Ljava/lang/Object;)V - public abstract fun resumeWithException (Ljava/lang/Throwable;)V -} - -public abstract interface class kotlin/coroutines/experimental/ContinuationInterceptor : kotlin/coroutines/experimental/CoroutineContext$Element { - public static final field Key Lkotlin/coroutines/experimental/ContinuationInterceptor$Key; - public abstract fun interceptContinuation (Lkotlin/coroutines/experimental/Continuation;)Lkotlin/coroutines/experimental/Continuation; -} - -public final class kotlin/coroutines/experimental/ContinuationInterceptor$DefaultImpls { - public static fun fold (Lkotlin/coroutines/experimental/ContinuationInterceptor;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; - public static fun get (Lkotlin/coroutines/experimental/ContinuationInterceptor;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext$Element; - public static fun minusKey (Lkotlin/coroutines/experimental/ContinuationInterceptor;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext; - public static fun plus (Lkotlin/coroutines/experimental/ContinuationInterceptor;Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext; -} - -public final class kotlin/coroutines/experimental/ContinuationInterceptor$Key : kotlin/coroutines/experimental/CoroutineContext$Key { -} - -public abstract interface class kotlin/coroutines/experimental/CoroutineContext { - public abstract fun fold (Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; - public abstract fun get (Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext$Element; - public abstract fun minusKey (Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext; - public abstract fun plus (Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext; -} - -public final class kotlin/coroutines/experimental/CoroutineContext$DefaultImpls { - public static fun plus (Lkotlin/coroutines/experimental/CoroutineContext;Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext; -} - -public abstract interface class kotlin/coroutines/experimental/CoroutineContext$Element : kotlin/coroutines/experimental/CoroutineContext { - public abstract fun fold (Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; - public abstract fun get (Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext$Element; - public abstract fun getKey ()Lkotlin/coroutines/experimental/CoroutineContext$Key; - public abstract fun minusKey (Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext; -} - -public final class kotlin/coroutines/experimental/CoroutineContext$Element$DefaultImpls { - public static fun fold (Lkotlin/coroutines/experimental/CoroutineContext$Element;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; - public static fun get (Lkotlin/coroutines/experimental/CoroutineContext$Element;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext$Element; - public static fun minusKey (Lkotlin/coroutines/experimental/CoroutineContext$Element;Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext; - public static fun plus (Lkotlin/coroutines/experimental/CoroutineContext$Element;Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext; -} - -public abstract interface class kotlin/coroutines/experimental/CoroutineContext$Key { -} - -public final class kotlin/coroutines/experimental/CoroutinesKt { - public static final fun createCoroutine (Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Lkotlin/coroutines/experimental/Continuation; - public static final fun createCoroutine (Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/experimental/Continuation;)Lkotlin/coroutines/experimental/Continuation; - public static final fun startCoroutine (Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)V - public static final fun startCoroutine (Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/experimental/Continuation;)V - public static final fun suspendCoroutine (Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object; -} - -public final class kotlin/coroutines/experimental/EmptyCoroutineContext : kotlin/coroutines/experimental/CoroutineContext { - public static final field INSTANCE Lkotlin/coroutines/experimental/EmptyCoroutineContext; - public fun fold (Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object; - public fun get (Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext$Element; - public fun hashCode ()I - public fun minusKey (Lkotlin/coroutines/experimental/CoroutineContext$Key;)Lkotlin/coroutines/experimental/CoroutineContext; - public fun plus (Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext; - public fun toString ()Ljava/lang/String; -} - -public abstract interface annotation class kotlin/coroutines/experimental/RestrictsSuspension : java/lang/annotation/Annotation { -} - -public final class kotlin/coroutines/experimental/SafeContinuation : kotlin/coroutines/experimental/Continuation { - public static final field Companion Lkotlin/coroutines/experimental/SafeContinuation$Companion; - public fun (Lkotlin/coroutines/experimental/Continuation;)V - public fun getContext ()Lkotlin/coroutines/experimental/CoroutineContext; - public final fun getResult ()Ljava/lang/Object; - public fun resume (Ljava/lang/Object;)V - public fun resumeWithException (Ljava/lang/Throwable;)V -} - -public final class kotlin/coroutines/experimental/SafeContinuation$Companion { -} - -public abstract class kotlin/coroutines/experimental/SequenceBuilder { - public abstract fun yield (Ljava/lang/Object;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object; - public final fun yieldAll (Ljava/lang/Iterable;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object; - public abstract fun yieldAll (Ljava/util/Iterator;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object; - public final fun yieldAll (Lkotlin/sequences/Sequence;Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object; -} - -public final class kotlin/coroutines/experimental/SequenceBuilderKt { - public static final fun buildIterator (Lkotlin/jvm/functions/Function2;)Ljava/util/Iterator; - public static final fun buildSequence (Lkotlin/jvm/functions/Function2;)Lkotlin/sequences/Sequence; -} - -public final class kotlin/coroutines/experimental/intrinsics/IntrinsicsKt { - public static final fun createCoroutineUnchecked (Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/experimental/Continuation;)Lkotlin/coroutines/experimental/Continuation; - public static final fun createCoroutineUnchecked (Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/experimental/Continuation;)Lkotlin/coroutines/experimental/Continuation; - public static final fun getCOROUTINE_SUSPENDED ()Ljava/lang/Object; -} - -public abstract class kotlin/coroutines/experimental/jvm/internal/CoroutineImpl : kotlin/jvm/internal/Lambda, kotlin/coroutines/experimental/Continuation { - protected field completion Lkotlin/coroutines/experimental/Continuation; - protected field label I - public fun (ILkotlin/coroutines/experimental/Continuation;)V - public fun create (Ljava/lang/Object;Lkotlin/coroutines/experimental/Continuation;)Lkotlin/coroutines/experimental/Continuation; - public fun create (Lkotlin/coroutines/experimental/Continuation;)Lkotlin/coroutines/experimental/Continuation; - protected abstract fun doResume (Ljava/lang/Object;Ljava/lang/Throwable;)Ljava/lang/Object; - public fun getContext ()Lkotlin/coroutines/experimental/CoroutineContext; - public final fun getFacade ()Lkotlin/coroutines/experimental/Continuation; - public fun resume (Ljava/lang/Object;)V - public fun resumeWithException (Ljava/lang/Throwable;)V -} - -public final class kotlin/coroutines/experimental/jvm/internal/CoroutineIntrinsics { - public static final fun normalizeContinuation (Lkotlin/coroutines/experimental/Continuation;)Lkotlin/coroutines/experimental/Continuation; -} - -public final class kotlin/coroutines/experimental/migration/CoroutinesMigrationKt { - public static final fun toContinuation (Lkotlin/coroutines/experimental/Continuation;)Lkotlin/coroutines/Continuation; - public static final fun toContinuationInterceptor (Lkotlin/coroutines/experimental/ContinuationInterceptor;)Lkotlin/coroutines/ContinuationInterceptor; - public static final fun toCoroutineContext (Lkotlin/coroutines/experimental/CoroutineContext;)Lkotlin/coroutines/CoroutineContext; - public static final fun toExperimentalContinuation (Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/experimental/Continuation; - public static final fun toExperimentalContinuationInterceptor (Lkotlin/coroutines/ContinuationInterceptor;)Lkotlin/coroutines/experimental/ContinuationInterceptor; - public static final fun toExperimentalCoroutineContext (Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/experimental/CoroutineContext; -} - public final class kotlin/coroutines/intrinsics/CoroutineSingletons : java/lang/Enum { public static final field COROUTINE_SUSPENDED Lkotlin/coroutines/intrinsics/CoroutineSingletons; public static final field RESUMED Lkotlin/coroutines/intrinsics/CoroutineSingletons; diff --git a/libraries/tools/binary-compatibility-validator/src/test/kotlin/org.jetbrains.kotlin.tools.tests/RuntimePublicAPITest.kt b/libraries/tools/binary-compatibility-validator/src/test/kotlin/org.jetbrains.kotlin.tools.tests/RuntimePublicAPITest.kt index 86c4cc4acaa..d7c1732e98b 100644 --- a/libraries/tools/binary-compatibility-validator/src/test/kotlin/org.jetbrains.kotlin.tools.tests/RuntimePublicAPITest.kt +++ b/libraries/tools/binary-compatibility-validator/src/test/kotlin/org.jetbrains.kotlin.tools.tests/RuntimePublicAPITest.kt @@ -33,6 +33,10 @@ class RuntimePublicAPITest { snapshotAPIAndCompare("../../reflect/api/build/libs", "kotlin-reflect-api(?!-[-a-z]+)", nonPublicPackages = listOf("kotlin.reflect.jvm.internal")) } + @Test fun kotlinCoroutinesExperimentalCompat() { + snapshotAPIAndCompare("../../stdlib/coroutines-experimental/build/libs", "kotlin-coroutines-experimental-compat") + } + private fun snapshotAPIAndCompare( basePath: String, diff --git a/prepare/compiler/build.gradle.kts b/prepare/compiler/build.gradle.kts index b651eaf6720..cc319cf9dad 100644 --- a/prepare/compiler/build.gradle.kts +++ b/prepare/compiler/build.gradle.kts @@ -73,6 +73,7 @@ val distLibraryProjects = listOfNotNull( ":kotlin-annotations-android", ":kotlin-annotations-jvm", ":kotlin-ant", + ":kotlin-coroutines-experimental-compat", ":kotlin-daemon", ":kotlin-daemon-client", ":kotlin-daemon-client-new", @@ -108,6 +109,7 @@ val distCompilerPluginProjects = listOf( val distSourcesProjects = listOfNotNull( ":kotlin-annotations-jvm", + ":kotlin-coroutines-experimental-compat", ":kotlin-script-runtime", ":kotlin-test:kotlin-test-js".takeIf { !kotlinBuildProperties.isInJpsBuildIdeaSync }, ":kotlin-test:kotlin-test-junit", diff --git a/settings.gradle b/settings.gradle index fa98f33392a..058050ad879 100644 --- a/settings.gradle +++ b/settings.gradle @@ -188,6 +188,7 @@ include ":kotlin-build-common", ":plugins:uast-kotlin-idea", ":plugins:annotation-based-compiler-plugins-ide-support", ":kotlin-script-runtime", + ":kotlin-coroutines-experimental-compat", ":kotlin-test", ":kotlin-test:kotlin-test-common", ":kotlin-test:kotlin-test-annotations-common", @@ -359,6 +360,7 @@ if (buildProperties.inJpsBuildIdeaSync) { rootProject.name = "kotlin" project(':kotlin-script-runtime').projectDir = "$rootDir/libraries/tools/script-runtime" as File +project(":kotlin-coroutines-experimental-compat").projectDir = "$rootDir/libraries/stdlib/coroutines-experimental" as File project(':kotlin-test').projectDir = "$rootDir/libraries/kotlin.test" as File project(':kotlin-test:kotlin-test-common').projectDir = "$rootDir/libraries/kotlin.test/common" as File project(':kotlin-test:kotlin-test-annotations-common').projectDir = "$rootDir/libraries/kotlin.test/annotations-common" as File