@@ -22,7 +22,7 @@ class KFunctionForCall<T> internal constructor(
2222 parameterNameConverter : ParameterNameConverter ,
2323 instance : Any? = null
2424) {
25- constructor (function: KFunction <T >, parameterNameConverter: (String ) -> String , instance: Any? = null ) : this (
25+ constructor (function: KFunction <T >, parameterNameConverter: (( String ) -> String ) ? , instance: Any? = null ) : this (
2626 function,
2727 ParameterNameConverter .Simple (parameterNameConverter),
2828 instance
@@ -44,24 +44,25 @@ class KFunctionForCall<T> internal constructor(
4444 // この関数には確実にアクセスするためアクセシビリティ書き換え
4545 function.isAccessible = true
4646
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 < * >>()
5050
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)
5255
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+ }
6161 }
6262 }
6363 }
6464
65+ bucketGenerator = BucketGenerator (parameters, tempBinders, instance)
6566 requiredParameters = tempList
6667 requiredParametersMap = tempMap
6768 }
@@ -107,7 +108,7 @@ internal fun <T : Any> KClass<T>.toKConstructor(parameterNameConverter: Paramete
107108}
108109
109110@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 > =
111112 this .toKConstructor(ParameterNameConverter .Simple (parameterNameConverter))
112113
113114private fun KParameter.toArgumentBinder (parameterNameConverter : ParameterNameConverter ): ArgumentBinder {
0 commit comments