blob: 40006fd70f89762323cd7792724ea6714c54d739 [file] [log] [blame]
Roman Elizarov44e3ba52017-08-01 22:01:31 -07001/*
2 * Copyright 2016-2017 JetBrains s.r.o.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package kotlinx.coroutines.experimental.quasar
18
19import co.paralleluniverse.fibers.instrument.MethodDatabase
20import co.paralleluniverse.fibers.instrument.SuspendableClassifier
21
22/**
23 * @suppress **Internal implementation**.
24 */
25class KotlinSuspendableClassifier : SuspendableClassifier {
26 override fun isSuspendable(
27 db: MethodDatabase,
28 sourceName: String?,
29 sourceDebugInfo: String?,
30 isInterface: Boolean,
31 className: String?,
32 superClassName: String?,
33 interfaces: Array<out String>,
34 methodName: String,
35 methodDesc: String,
36 methodSignature: String?,
37 methodExceptions: Array<out String>?
38 ): MethodDatabase.SuspendableType? {
39 if (methodName == "run" &&
40 methodDesc.startsWith("()") &&
41 interfaces.contains("co/paralleluniverse/strands/SuspendableCallable"))
42 return MethodDatabase.SuspendableType.SUSPENDABLE
43 return null
44 }
45}