Skip to content
This repository was archived by the owner on Jan 20, 2023. It is now read-only.

Commit 142c147

Browse files
committed
ラッパーを利用する形に修正
1 parent e07ed13 commit 142c147

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

src/main/kotlin/com/mapk/core/KFunctionForCall.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.mapk.core
33
import com.mapk.annotations.KParameterFlatten
44
import com.mapk.core.internal.ArgumentBinder
55
import com.mapk.core.internal.BucketGenerator
6+
import com.mapk.core.internal.FullInitializedFunctionWrapper
67
import com.mapk.core.internal.ParameterNameConverter
78
import com.mapk.core.internal.getAliasOrName
89
import com.mapk.core.internal.getKConstructor
@@ -13,7 +14,6 @@ import kotlin.reflect.KFunction
1314
import kotlin.reflect.KParameter
1415
import kotlin.reflect.full.findAnnotation
1516
import kotlin.reflect.jvm.isAccessible
16-
import kotlin.reflect.jvm.javaConstructor
1717

1818
class KFunctionForCall<T> internal constructor(
1919
@TestOnly
@@ -28,9 +28,7 @@ class KFunctionForCall<T> internal constructor(
2828
)
2929

3030
@TestOnly
31-
internal val fullInitializedFunctionLambda: (Array<Any?>) -> T = function.javaConstructor?.let {
32-
{ values -> it.newInstance(*values) }
33-
} ?: { function.call(*it) }
31+
internal val fullInitializedWrapper: FullInitializedFunctionWrapper<T>
3432

3533
@TestOnly
3634
internal val parameters: List<KParameter> = function.parameters
@@ -48,6 +46,8 @@ class KFunctionForCall<T> internal constructor(
4846
// この関数には確実にアクセスするためアクセシビリティ書き換え
4947
function.isAccessible = true
5048

49+
fullInitializedWrapper = FullInitializedFunctionWrapper(function, instance, parameters.size)
50+
5151
val tempBinders = ArrayList<ArgumentBinder>()
5252
val tempList = ArrayList<ValueParameter<*>>()
5353
val tempMap = HashMap<String, ValueParameter<*>>()
@@ -86,7 +86,7 @@ class KFunctionForCall<T> internal constructor(
8686

8787
fun call(adaptor: ArgumentAdaptor): T {
8888
val bucket = bucketGenerator.generate(adaptor)
89-
return if (bucket.isInitialized) fullInitializedFunctionLambda(bucket.valueArray) else function.callBy(bucket)
89+
return if (bucket.isInitialized) fullInitializedWrapper.call(bucket.valueArray) else function.callBy(bucket)
9090
}
9191
}
9292

0 commit comments

Comments
 (0)