@@ -22,7 +22,7 @@ class KFunctionForCall<T> internal constructor(
22
22
parameterNameConverter : ParameterNameConverter ,
23
23
instance : Any? = null
24
24
) {
25
- constructor (function: KFunction <T >, parameterNameConverter: (String ) -> String , instance: Any? = null ) : this (
25
+ constructor (function: KFunction <T >, parameterNameConverter: (( String ) -> String ) ? , instance: Any? = null ) : this (
26
26
function,
27
27
ParameterNameConverter .Simple (parameterNameConverter),
28
28
instance
@@ -44,24 +44,25 @@ class KFunctionForCall<T> internal constructor(
44
44
// この関数には確実にアクセスするためアクセシビリティ書き換え
45
45
function.isAccessible = true
46
46
47
- val binders : List <ArgumentBinder > = parameters
48
- .filter { it.kind == KParameter . Kind . VALUE && ! it.isUseDefaultArgument() }
49
- .map { it.toArgumentBinder(parameterNameConverter) }
47
+ val tempBinders = ArrayList <ArgumentBinder >()
48
+ val tempList = ArrayList < ValueParameter < * >>()
49
+ val tempMap = HashMap < String , ValueParameter < * >>()
50
50
51
- bucketGenerator = BucketGenerator (parameters, binders, instance)
51
+ parameters.forEach { param ->
52
+ if (param.kind == KParameter .Kind .VALUE && ! param.isUseDefaultArgument()) {
53
+ val binder = param.toArgumentBinder(parameterNameConverter)
54
+ tempBinders.add(binder)
52
55
53
- val tempList = ArrayList <ValueParameter <* >>(binders.size)
54
- val tempMap = HashMap <String , ValueParameter <* >>(binders.size)
55
-
56
- binders.forEach { binder ->
57
- when (binder) {
58
- is ArgumentBinder .Value <* > -> addArgs(binder, tempList, tempMap)
59
- is ArgumentBinder .Function -> binder.requiredParameters.forEach {
60
- addArgs(it, tempList, tempMap)
56
+ when (binder) {
57
+ is ArgumentBinder .Value <* > -> addArgs(binder, tempList, tempMap)
58
+ is ArgumentBinder .Function -> binder.requiredParameters.forEach {
59
+ addArgs(it, tempList, tempMap)
60
+ }
61
61
}
62
62
}
63
63
}
64
64
65
+ bucketGenerator = BucketGenerator (parameters, tempBinders, instance)
65
66
requiredParameters = tempList
66
67
requiredParametersMap = tempMap
67
68
}
@@ -107,7 +108,7 @@ internal fun <T : Any> KClass<T>.toKConstructor(parameterNameConverter: Paramete
107
108
}
108
109
109
110
@Suppress(" UNCHECKED_CAST" )
110
- fun <T : Any > KClass<T>.toKConstructor (parameterNameConverter : (String ) -> String ): KFunctionForCall <T > =
111
+ fun <T : Any > KClass<T>.toKConstructor (parameterNameConverter : (( String ) -> String ) ? ): KFunctionForCall <T > =
111
112
this .toKConstructor(ParameterNameConverter .Simple (parameterNameConverter))
112
113
113
114
private fun KParameter.toArgumentBinder (parameterNameConverter : ParameterNameConverter ): ArgumentBinder {
0 commit comments