Finishing touch: drop experimental coroutines sourcesets from stdlib

#KT-36083
This commit is contained in:
Ilya Gorbunov
2020-01-22 21:02:46 +03:00
parent c28710419a
commit 7792613f88
5 changed files with 4 additions and 298 deletions
-25
View File
@@ -26,18 +26,11 @@ sourceSets {
srcDir 'test'
}
}
coroutinesExperimental {
kotlin {
// srcDir '../coroutines-experimental/src'
}
}
}
dependencies {
testCompile project(":kotlin-test:kotlin-test-common")
testCompile project(":kotlin-test:kotlin-test-annotations-common")
coroutinesExperimentalCompile sourceSets.main.output
}
compileKotlinCommon {
@@ -60,22 +53,6 @@ compileKotlinCommon {
}
}
compileCoroutinesExperimentalKotlinCommon {
kotlinOptions {
languageVersion = "1.3"
apiVersion = "1.3"
freeCompilerArgs = [
"-module-name", project.name+"-coroutines",
"-Xuse-experimental=kotlin.contracts.ExperimentalContracts",
"-Xuse-experimental=kotlin.Experimental",
"-Xcoroutines=enable",
"-XXLanguage:-ReleaseCoroutines",
"-Xallow-kotlin-package",
"-Xallow-result-return-type"
]
}
}
compileTestKotlinCommon {
kotlinOptions {
freeCompilerArgs += [
@@ -88,13 +65,11 @@ compileTestKotlinCommon {
jar {
manifestAttributes(manifest, project, 'Main')
from sourceSets.coroutinesExperimental.output
}
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.kotlin
from sourceSets.coroutinesExperimental.kotlin
}
configurations {
@@ -1,108 +0,0 @@
/*
* Copyright 2010-2018 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 kotlin.coroutines.experimental
import kotlin.coroutines.experimental.intrinsics.*
@JsName("CoroutineImpl")
internal abstract class CoroutineImpl(private val resultContinuation: Continuation<Any?>) : Continuation<Any?> {
protected var state = 0
protected var exceptionState = 0
protected var result: Any? = null
protected var exception: Throwable? = null
protected var finallyPath: Array<Int>? = null
public override val context: CoroutineContext = resultContinuation.context
val facade: Continuation<Any?> = context[ContinuationInterceptor]?.interceptContinuation(this) ?: this
override fun resume(value: Any?) {
result = value
doResumeWrapper()
}
override fun resumeWithException(exception: Throwable) {
state = exceptionState
this.exception = exception
doResumeWrapper()
}
protected fun doResumeWrapper() {
processBareContinuationResume(resultContinuation) { doResume() }
}
protected abstract fun doResume(): Any?
}
private val UNDECIDED: Any? = Any()
private val RESUMED: Any? = Any()
private class Fail(val exception: Throwable)
@PublishedApi
internal actual class SafeContinuation<in T>
internal actual constructor(
private val delegate: Continuation<T>,
initialResult: Any?
) : Continuation<T> {
@PublishedApi
internal actual constructor(delegate: Continuation<T>) : this(delegate, UNDECIDED)
public actual override val context: CoroutineContext
get() = delegate.context
private var result: Any? = initialResult
actual override fun resume(value: T) {
when {
result === UNDECIDED -> {
result = value
}
result === COROUTINE_SUSPENDED -> {
result = RESUMED
delegate.resume(value)
}
else -> {
throw IllegalStateException("Already resumed")
}
}
}
actual override fun resumeWithException(exception: Throwable) {
when {
result === UNDECIDED -> {
result = Fail(exception)
}
result === COROUTINE_SUSPENDED -> {
result = RESUMED
delegate.resumeWithException(exception)
}
else -> {
throw IllegalStateException("Already resumed")
}
}
}
@PublishedApi
internal actual fun getResult(): Any? {
if (result === UNDECIDED) {
result = COROUTINE_SUSPENDED
}
val result = this.result
return when {
result === RESUMED -> {
COROUTINE_SUSPENDED // already called continuation, indicate SUSPENDED upstream
}
result is Fail -> {
throw result.exception
}
else -> {
result // either SUSPENDED or data
}
}
}
}
@@ -1,46 +0,0 @@
/*
* Copyright 2010-2018 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("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER")
package kotlin.coroutines.experimental.intrinsics
import kotlin.coroutines.experimental.Continuation
@SinceKotlin("1.1")
@Suppress("UNCHECKED_CAST")
@kotlin.internal.InlineOnly
public actual inline fun <T> (suspend () -> T).startCoroutineUninterceptedOrReturn(
completion: Continuation<T>
): Any? = this.asDynamic()(completion, false)
@SinceKotlin("1.1")
@Suppress("UNCHECKED_CAST")
@kotlin.internal.InlineOnly
public actual inline fun <R, T> (suspend R.() -> T).startCoroutineUninterceptedOrReturn(
receiver: R,
completion: Continuation<T>
): Any? = this.asDynamic()(receiver, completion, false)
@SinceKotlin("1.1")
public actual fun <R, T> (suspend R.() -> T).createCoroutineUnchecked(
receiver: R,
completion: Continuation<T>
): Continuation<Unit> = this.asDynamic()(receiver, completion, true).facade
@SinceKotlin("1.1")
public actual fun <T> (suspend () -> T).createCoroutineUnchecked(
completion: Continuation<T>
): Continuation<Unit> = this.asDynamic()(completion, true).facade
/**
* This value is used as a return value of [suspendCoroutineOrReturn] `block` argument to state that
* the execution was suspended and will not return any result immediately.
*/
@SinceKotlin("1.1")
public actual val COROUTINE_SUSPENDED: Any = CoroutineSuspendedMarker
private object CoroutineSuspendedMarker
+3 -41
View File
@@ -24,10 +24,8 @@ def commonSrcDir = "${projectDir}/../src/kotlin"
def commonSrcDir2 = "${projectDir}/../common/src"
def jsCommonDir = "${projectDir}/../js"
def coroutinesExpJsSrcDir = "${rootDir}/libraries/stdlib/coroutines-experimental/js/src"
def builtinsDir = "${rootDir}/core/builtins"
def unsignedCommonSrcDir = "${rootDir}/libraries/stdlib/unsigned/src"
def coroutinesJsModuleName = 'kotlin-stdlib-coroutines'
def jsSrcDir = "src"
def jsCommonSrcDir = "${jsCommonDir}/src"
@@ -67,19 +65,12 @@ sourceSets {
srcDir jsCommonTestSrcDir
}
}
coroutinesExperimental {
kotlin {
// srcDir coroutinesExpJsSrcDir
}
}
}
dependencies {
expectedBy project(":kotlin-stdlib-common")
commonSources project(path: ":kotlin-stdlib-common", configuration: "sources")
testCompile project(':kotlin-test:kotlin-test-js')
coroutinesExperimentalCompile project.files { sourceSets.main.output.files }.builtBy(compileKotlin2Js)
}
task prepareComparableSource(type: Copy) {
@@ -158,22 +149,6 @@ compileKotlin2Js {
}
}
compileCoroutinesExperimentalKotlin2Js {
kotlinOptions {
languageVersion = "1.3"
apiVersion = "1.3"
outputFile = "${buildDir}/classes/coroutinesExperimental/kotlin.js"
sourceMap = true
sourceMapPrefix = "./"
freeCompilerArgs += [
"-Xuse-experimental=kotlin.contracts.ExperimentalContracts",
"-Xuse-experimental=kotlin.Experimental",
"-Xcoroutines=enable",
"-XXLanguage:-ReleaseCoroutines"
]
}
}
compileTestKotlin2Js {
kotlinOptions {
moduleKind = "umd"
@@ -186,10 +161,9 @@ compileTestKotlin2Js {
}
task compileJs(type: NoDebugJavaExec) {
dependsOn compileBuiltinsKotlin2Js, compileKotlin2Js, compileCoroutinesExperimentalKotlin2Js
dependsOn compileBuiltinsKotlin2Js, compileKotlin2Js
inputs.files(compileBuiltinsKotlin2Js.outputs.files).withPathSensitivity(PathSensitivity.RELATIVE)
inputs.files(compileKotlin2Js.outputs.files).withPathSensitivity(PathSensitivity.RELATIVE)
inputs.files(compileCoroutinesExperimentalKotlin2Js.outputs.files).withPathSensitivity(PathSensitivity.RELATIVE)
inputs.dir(jsSrcDir).withPathSensitivity(PathSensitivity.RELATIVE)
inputs.dir(jsCommonSrcDir).withPathSensitivity(PathSensitivity.RELATIVE)
@@ -206,8 +180,7 @@ 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()).findAll {
it.endsWith(".js") && !it.endsWith(".meta.js")
}
}
@@ -253,8 +226,7 @@ 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
}
}
@@ -283,9 +255,6 @@ task libraryJarWithoutIr(type: Jar, dependsOn: compileJs) {
from jsOutputMetaFile
from "${jsOutputFile}.map"
from sourceSets.main.output
from("${buildDir}/classes/coroutinesExperimental/kotlin") {
into coroutinesJsModuleName
}
}
task libraryJarWithIr(type: Zip, dependsOn: libraryJarWithoutIr) {
@@ -321,9 +290,6 @@ task sourcesJar(type: Jar, dependsOn: compileJs) {
from(sourceSets.main.allSource) {
include 'org.w3c/**'
}
from(sourceSets.coroutinesExperimental.allSource) {
into 'kotlin'
}
}
task distSourcesJar(type: Jar) {
@@ -338,10 +304,6 @@ task distSourcesJar(type: Jar) {
exclude 'META-INF/*'
into 'common'
}
from(project(":kotlin-stdlib-common").sourceSets.coroutinesExperimental.allSource) {
into 'kotlin'
}
}
def javadocJar = javadocJar()
+1 -78
View File
@@ -24,23 +24,6 @@ sourceSets {
srcDir 'src'
}
}
coroutinesExperimental {
kotlin {
// srcDir '../coroutines-experimental/jvm/src'
}
}
coroutinesExperimentalTest {
kotlin {
// srcDir '../coroutines-experimental/jvm/test'
}
}
coroutinesExperimentalMigrationTest {
kotlin {
if(!BuildPropertiesKt.getKotlinBuildProperties(project).inIdeaSync) {
// srcDir '../coroutines-experimental/jvm/test'
}
}
}
test {
kotlin {
srcDir 'test'
@@ -60,12 +43,9 @@ sourceSets {
configurations {
commonSources
coroutinesExperimentalTestCompile.extendsFrom(testCompile)
coroutinesExperimentalMigrationTestCompile.extendsFrom(coroutinesExperimentalTestCompile)
longRunningTestCompile.extendsFrom(testCompile)
builtins
compileOnly.extendsFrom(builtins)
coroutinesExperimentalCompile.extendsFrom(builtins)
}
dependencies {
@@ -76,12 +56,8 @@ dependencies {
compile group: 'org.jetbrains', name: 'annotations', version:'13.0'
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
builtins project(':core:builtins')
}
@@ -91,14 +67,12 @@ jar {
from {
zipTree(configurations.builtins.singleFile)
}
from sourceSets.coroutinesExperimental.output
// TODO: enable as soon as this doesn't cause D8/DX to crash
// from sourceSets.java9.output
}
sourcesJar {
from "${rootDir}/core/builtins/native"
from sourceSets.coroutinesExperimental.kotlin
}
task distSourcesJar(type: Jar) {
@@ -161,58 +135,7 @@ compileKotlin {
}
compileJava9Sources(project, 'kotlin.stdlib', [sourceSets.main.output, sourceSets.coroutinesExperimental.output])
compileCoroutinesExperimentalKotlin {
kotlinOptions {
languageVersion = "1.3"
apiVersion = "1.3"
freeCompilerArgs = [
"-version",
"-Xallow-kotlin-package",
"-Xallow-result-return-type",
"-Xmultifile-parts-inherit",
"-Xuse-experimental=kotlin.contracts.ExperimentalContracts",
"-Xuse-experimental=kotlin.Experimental",
"-Xcoroutines=enable",
"-XXLanguage:-ReleaseCoroutines",
"-Xno-use-ir",
"-module-name", "kotlin-stdlib-coroutines"
]
}
}
compileCoroutinesExperimentalTestKotlin {
kotlinOptions {
languageVersion = "1.2"
apiVersion = "1.2"
freeCompilerArgs = [
"-Xcoroutines=enable"
]
}
}
compileCoroutinesExperimentalMigrationTestKotlin {
kotlinOptions {
languageVersion = "1.3"
apiVersion = "1.3"
freeCompilerArgs = []
}
}
task coroutinesExperimentalTest(type: Test, dependsOn: coroutinesExperimentalTestClasses) {
group = "verification"
testClassesDirs = sourceSets.coroutinesExperimentalTest.output.classesDirs
classpath = sourceSets.coroutinesExperimentalTest.runtimeClasspath
}
task coroutinesExperimentalMigrationTest(type: Test, dependsOn: coroutinesExperimentalMigrationTestClasses) {
group = "verification"
testClassesDirs = sourceSets.coroutinesExperimentalMigrationTest.output.classesDirs
classpath = sourceSets.coroutinesExperimentalMigrationTest.runtimeClasspath
}
check.dependsOn(coroutinesExperimentalTest)
check.dependsOn(coroutinesExperimentalMigrationTest)
compileJava9Sources(project, 'kotlin.stdlib', [sourceSets.main.output])
compileTestKotlin {
kotlinOptions {