@@ -10,9 +10,7 @@ import com.mapk.core.internal.isUseDefaultArgument
1010import kotlin.reflect.KClass
1111import kotlin.reflect.KFunction
1212import kotlin.reflect.KParameter
13- import kotlin.reflect.full.companionObjectInstance
1413import kotlin.reflect.full.findAnnotation
15- import kotlin.reflect.full.functions
1614import kotlin.reflect.full.primaryConstructor
1715import kotlin.reflect.jvm.isAccessible
1816import kotlin.reflect.jvm.jvmName
@@ -91,17 +89,15 @@ class KFunctionForCall<T> internal constructor(
9189internal fun <T : Any > KClass<T>.toKConstructor (parameterNameConverter : ParameterNameConverter ): KFunctionForCall <T > {
9290 val constructors = ArrayList <KFunctionForCall <T >>()
9391
94- this .companionObjectInstance?.let { companionObject ->
95- companionObject::class .functions
96- .filter { it.annotations.any { annotation -> annotation is KConstructor } }
97- .forEach {
98- constructors.add(KFunctionForCall (it, parameterNameConverter, companionObject) as KFunctionForCall <T >)
99- }
92+ this .getAnnotatedFunctionsFromCompanionObject<KConstructor >()?.let { (instance, functions) ->
93+ functions.forEach {
94+ constructors.add(KFunctionForCall (it as KFunction <T >, parameterNameConverter, instance))
95+ }
10096 }
10197
102- this .constructors
103- .filter { it.annotations.any { annotation -> annotation is KConstructor } }
104- .forEach { constructors.add( KFunctionForCall (it, parameterNameConverter)) }
98+ this .constructors.getAnnotatedFunctions< KConstructor , T >().forEach {
99+ constructors.add( KFunctionForCall (it, parameterNameConverter))
100+ }
105101
106102 if (constructors.size == 1 ) return constructors.single()
107103
@@ -127,12 +123,12 @@ private fun KParameter.toArgumentBinder(parameterNameConverter: ParameterNameCon
127123 parameterNameConverter.toSimple()
128124 }
129125
130- ArgumentBinder .Function ((type.classifier as KClass < * > ).toKConstructor(converter), index, annotations)
126+ ArgumentBinder .Function (getKClass( ).toKConstructor(converter), index, annotations)
131127 } ? : ArgumentBinder .Value (
132128 index,
133129 annotations,
134130 isOptional,
135131 parameterNameConverter.convert(name),
136- type.classifier as KClass < * >
132+ getKClass()
137133 )
138134}
0 commit comments