This commit is contained in:
Ben Bader 2018-10-30 10:41:04 -07:00 коммит произвёл GitHub
Родитель df77d08c83
Коммит 4490117b05
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
7 изменённых файлов: 14 добавлений и 33 удалений

Просмотреть файл

@ -28,7 +28,7 @@ allprojects {
version VERSION version VERSION
project.ext { project.ext {
kotlin_version = '1.2.71' kotlin_version = '1.3.0'
libraries = [ libraries = [
clikt: [ clikt: [
@ -85,7 +85,7 @@ buildscript {
dependencies { dependencies {
classpath 'net.ltgt.gradle:gradle-errorprone-plugin:0.0.14' classpath 'net.ltgt.gradle:gradle-errorprone-plugin:0.0.14'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.60" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.0"
classpath 'org.jetbrains.dokka:dokka-gradle-plugin:0.9.17' classpath 'org.jetbrains.dokka:dokka-gradle-plugin:0.9.17'
classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.4' classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.4'
} }

Просмотреть файл

@ -131,10 +131,3 @@ compileTestJava {
tasks['javadoc'].configure { tasks['javadoc'].configure {
exclude '**/generated-src/**' exclude '**/generated-src/**'
} }
kotlin {
experimental {
coroutines "enable"
}
}

Просмотреть файл

@ -41,9 +41,9 @@ import com.microsoft.thrifty.transport.SocketTransport
import com.microsoft.thrifty.transport.Transport import com.microsoft.thrifty.transport.Transport
import io.kotlintest.fail import io.kotlintest.fail
import io.kotlintest.shouldBe import io.kotlintest.shouldBe
import kotlinx.coroutines.experimental.async import kotlinx.coroutines.async
import kotlinx.coroutines.experimental.awaitAll import kotlinx.coroutines.awaitAll
import kotlinx.coroutines.experimental.runBlocking import kotlinx.coroutines.runBlocking
import okio.ByteString import okio.ByteString
import org.junit.After import org.junit.After
import org.junit.Before import org.junit.Before

Просмотреть файл

@ -37,9 +37,3 @@ dependencies {
testImplementation 'com.google.testing.compile:compile-testing:0.9' testImplementation 'com.google.testing.compile:compile-testing:0.9'
} }
kotlin {
experimental {
coroutines "enable"
}
}

Просмотреть файл

@ -84,7 +84,6 @@ import com.squareup.kotlinpoet.asClassName
import com.squareup.kotlinpoet.asTypeName import com.squareup.kotlinpoet.asTypeName
import com.squareup.kotlinpoet.jvm.jvmField import com.squareup.kotlinpoet.jvm.jvmField
import com.squareup.kotlinpoet.jvm.jvmStatic import com.squareup.kotlinpoet.jvm.jvmStatic
import kotlin.coroutines.experimental.buildSequence
import okio.ByteString import okio.ByteString
import java.io.IOException import java.io.IOException
import javax.annotation.Generated import javax.annotation.Generated
@ -281,7 +280,7 @@ class KotlinCodeGenerator(
} }
OutputStyle.FILE_PER_TYPE -> { OutputStyle.FILE_PER_TYPE -> {
buildSequence { sequence {
val types = specsByNamespace.entries().asSequence() val types = specsByNamespace.entries().asSequence()
for ((ns, type) in types) { for ((ns, type) in types) {
@ -1594,7 +1593,8 @@ class KotlinCodeGenerator(
// suspendCoroutine is obviously not a class, but until kotlinpoet supports // suspendCoroutine is obviously not a class, but until kotlinpoet supports
// importing fully-qualified fun names, we can pun and use a ClassName. // importing fully-qualified fun names, we can pun and use a ClassName.
val suspendCoroFn = ClassName("kotlin.coroutines.experimental", "suspendCoroutine") val suspendCoroFn = ClassName("kotlin.coroutines", "suspendCoroutine")
val coroResultClass = ClassName("kotlin", "Result")
for ((index, interfaceFun) in serviceInterface.funSpecs.withIndex()) { for ((index, interfaceFun) in serviceInterface.funSpecs.withIndex()) {
val method = serviceType.methods[index] val method = serviceType.methods[index]
@ -1614,16 +1614,16 @@ class KotlinCodeGenerator(
// //
// It's a bit ungainly, but as an implementation detail it's acceptable. // It's a bit ungainly, but as an implementation detail it's acceptable.
if (method.oneWay) { if (method.oneWay) {
addStatement("cont.resume(Unit)") addStatement("cont.resumeWith(%T.success(Unit))", coroResultClass)
} else { } else {
addStatement("cont.resume(result)") addStatement("cont.resumeWith(%T.success(result))", coroResultClass)
} }
} }
.build()) .build())
.addFunction(FunSpec.builder("onError") .addFunction(FunSpec.builder("onError")
.addModifiers(KModifier.OVERRIDE) .addModifiers(KModifier.OVERRIDE)
.addParameter("error", Throwable::class) .addParameter("error", Throwable::class)
.addStatement("cont.resumeWithException(error)") .addStatement("cont.resumeWith(%T.failure(error))", coroResultClass)
.build()) .build())
.build() .build()

Просмотреть файл

@ -340,11 +340,11 @@ class KotlinCodeGeneratorTest {
| override suspend fun doSomething(foo: Int): Int = suspendCoroutine { cont -> | override suspend fun doSomething(foo: Int): Int = suspendCoroutine { cont ->
| this.enqueue(DoSomethingCall(foo, object : ServiceMethodCallback<Int> { | this.enqueue(DoSomethingCall(foo, object : ServiceMethodCallback<Int> {
| override fun onSuccess(result: Int) { | override fun onSuccess(result: Int) {
| cont.resume(result) | cont.resumeWith(Result.success(result))
| } | }
| |
| override fun onError(error: Throwable) { | override fun onError(error: Throwable) {
| cont.resumeWithException(error) | cont.resumeWith(Result.failure(error))
| } | }
| })) | }))
| } | }

Просмотреть файл

@ -25,11 +25,5 @@ apply plugin: 'kotlin'
dependencies { dependencies {
api project(':thrifty-runtime') api project(':thrifty-runtime')
api libraries.kotlin api libraries.kotlin
api 'org.jetbrains.kotlinx:kotlinx-coroutines-core:0.24.0' api 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.0.0'
} }
kotlin {
experimental {
coroutines "enable"
}
}