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

Commit 16e6cf9

Browse files
committed
切り出したものを使うよう修正
1 parent f3dd759 commit 16e6cf9

File tree

1 file changed

+6
-27
lines changed

1 file changed

+6
-27
lines changed

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

Lines changed: 6 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.mapk.core
22

3-
import com.mapk.annotations.KConstructor
43
import com.mapk.annotations.KParameterFlatten
54
import com.mapk.core.internal.ArgumentBinder
65
import com.mapk.core.internal.BucketGenerator
@@ -11,9 +10,7 @@ import kotlin.reflect.KClass
1110
import kotlin.reflect.KFunction
1211
import kotlin.reflect.KParameter
1312
import kotlin.reflect.full.findAnnotation
14-
import kotlin.reflect.full.primaryConstructor
1513
import kotlin.reflect.jvm.isAccessible
16-
import kotlin.reflect.jvm.jvmName
1714
import org.jetbrains.annotations.TestOnly
1815

1916
class KFunctionForCall<T> internal constructor(
@@ -86,30 +83,10 @@ class KFunctionForCall<T> internal constructor(
8683
}
8784
}
8885

89-
@Suppress("UNCHECKED_CAST")
90-
internal fun <T : Any> KClass<T>.toKConstructor(parameterNameConverter: ParameterNameConverter): KFunctionForCall<T> {
91-
val constructors = ArrayList<KFunctionForCall<T>>()
92-
93-
this.getAnnotatedFunctionsFromCompanionObject<KConstructor>()?.let { (instance, functions) ->
94-
functions.forEach {
95-
constructors.add(KFunctionForCall(it as KFunction<T>, parameterNameConverter, instance))
96-
}
97-
}
98-
99-
this.constructors.getAnnotatedFunctions<KConstructor, T>().forEach {
100-
constructors.add(KFunctionForCall(it, parameterNameConverter))
101-
}
102-
103-
if (constructors.size == 1) return constructors.single()
104-
105-
if (constructors.isEmpty()) return KFunctionForCall(this.primaryConstructor!!, parameterNameConverter)
106-
107-
throw IllegalArgumentException("${this.jvmName} has multiple ${KConstructor::class.jvmName}.")
108-
}
109-
110-
@Suppress("UNCHECKED_CAST")
11186
fun <T : Any> KClass<T>.toKConstructor(parameterNameConverter: ((String) -> String)?): KFunctionForCall<T> =
112-
this.toKConstructor(ParameterNameConverter.Simple(parameterNameConverter))
87+
this.getKConstructor().let { (instance, function) ->
88+
KFunctionForCall(function, ParameterNameConverter.Simple(parameterNameConverter), instance)
89+
}
11390

11491
private fun KParameter.toArgumentBinder(parameterNameConverter: ParameterNameConverter): ArgumentBinder {
11592
val name = getAliasOrName()!!
@@ -124,7 +101,9 @@ private fun KParameter.toArgumentBinder(parameterNameConverter: ParameterNameCon
124101
parameterNameConverter.toSimple()
125102
}
126103

127-
ArgumentBinder.Function(getKClass().toKConstructor(converter), index, annotations)
104+
getKClass().getKConstructor().let { (instance, function) ->
105+
ArgumentBinder.Function(KFunctionForCall(function, converter, instance), index, annotations)
106+
}
128107
} ?: ArgumentBinder.Value(
129108
index,
130109
annotations,

0 commit comments

Comments
 (0)