@@ -4,12 +4,12 @@ import com.mapk.fastkfunction.argumentbucket.ArgumentBucket
4
4
import com.mapk.fastkfunction.argumentbucket.BucketGenerator
5
5
import java.lang.reflect.Method
6
6
import java.lang.reflect.Modifier
7
- import java.lang.reflect.Constructor as JavaConstructor
8
7
import kotlin.reflect.KFunction
9
8
import kotlin.reflect.KParameter
10
9
import kotlin.reflect.jvm.isAccessible
11
10
import kotlin.reflect.jvm.javaConstructor
12
11
import kotlin.reflect.jvm.javaMethod
12
+ import java.lang.reflect.Constructor as JavaConstructor
13
13
14
14
sealed class FastKFunction <T > {
15
15
abstract val valueParameters: List <KParameter >
@@ -129,7 +129,10 @@ sealed class FastKFunction<T> {
129
129
}
130
130
131
131
private fun <T > topLevelFunctionOf (
132
- function : KFunction <T >, instance : Any? , parameters : List <KParameter >, method : Method
132
+ function : KFunction <T >,
133
+ instance : Any? ,
134
+ parameters : List <KParameter >,
135
+ method : Method
133
136
): FastKFunction <T > = when {
134
137
// KParameter.Kind.EXTENSION_RECEIVERの要求が有れば確定で拡張関数
135
138
parameters[0 ].kind == KParameter .Kind .EXTENSION_RECEIVER -> {
@@ -145,19 +148,23 @@ sealed class FastKFunction<T> {
145
148
}
146
149
// javaMethodのパラメータサイズとKFunctionのパラメータサイズが違う場合も拡張関数
147
150
// インスタンスが設定されていれば高速呼び出し、そうじゃなければ通常の関数呼び出し
148
- method.parameters.size != parameters.size -> instance
149
- ?.let {
150
- val generator = BucketGenerator (parameters, instance)
151
- val valueParameters = parameters.subList(1 , parameters.size)
151
+ method.parameters.size != parameters.size ->
152
+ instance
153
+ ?.let {
154
+ val generator = BucketGenerator (parameters, instance)
155
+ val valueParameters = parameters.subList(1 , parameters.size)
152
156
153
- TopLevelExtensionFunction (function, method, instance, generator, valueParameters)
154
- } ? : Function (function, parameters)
157
+ TopLevelExtensionFunction (function, method, instance, generator, valueParameters)
158
+ } ? : Function (function, parameters)
155
159
// トップレベル関数
156
160
else -> TopLevelFunction (function, method, parameters)
157
161
}
158
162
159
163
private fun <T > instanceFunctionOf (
160
- function : KFunction <T >, inputtedInstance : Any? , parameters : List <KParameter >, method : Method
164
+ function : KFunction <T >,
165
+ inputtedInstance : Any? ,
166
+ parameters : List <KParameter >,
167
+ method : Method
161
168
): FastKFunction <T > {
162
169
val instance = inputtedInstance ? : method.declaringObject
163
170
0 commit comments