Skip to content

Commit cfc02dc

Browse files
committed
Fix invoking suspend function
1 parent 20f30f8 commit cfc02dc

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

src/main/kotlin/com/coxautodev/graphql/tools/MethodFieldResolver.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,9 +157,7 @@ open class MethodFieldResolverDataFetcher(private val sourceResolver: SourceReso
157157

158158
return if (isSuspendFunction) {
159159
GlobalScope.future(options.coroutineContext) {
160-
suspendCoroutineUninterceptedOrReturn<Any?> { continuation ->
161-
methodAccess.invoke(source, methodIndex, *args + continuation)?.transformWithGenericWrapper(environment)
162-
}
160+
methodAccess.invokeSuspend(source, methodIndex, args)?.transformWithGenericWrapper(environment)
163161
}
164162
} else {
165163
methodAccess.invoke(source, methodIndex, *args)?.transformWithGenericWrapper(environment)
@@ -185,6 +183,12 @@ open class MethodFieldResolverDataFetcher(private val sourceResolver: SourceReso
185183
}
186184
}
187185

186+
private suspend inline fun MethodAccess.invokeSuspend(target: Any, methodIndex: Int, args: Array<Any?>): Any? {
187+
return suspendCoroutineUninterceptedOrReturn { continuation ->
188+
invoke(target, methodIndex, *args + continuation)
189+
}
190+
}
191+
188192
class BatchedMethodFieldResolverDataFetcher(sourceResolver: SourceResolver, method: Method, args: List<ArgumentPlaceholder>, options: SchemaParserOptions) : MethodFieldResolverDataFetcher(sourceResolver, method, args, options) {
189193
@Batched
190194
override fun get(environment: DataFetchingEnvironment) = super.get(environment)

0 commit comments

Comments
 (0)