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

Commit e6171e7

Browse files
committed
instanceのクラスがパラメータにできないものであればその場で落とすように修正
1 parent d5ebaf7 commit e6171e7

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

src/main/kotlin/com/mapk/fastkfunction/FastKFunction.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ import com.mapk.fastkfunction.spreadwrapper.ForMethod
88
import org.jetbrains.annotations.TestOnly
99
import java.lang.reflect.Method
1010
import java.lang.reflect.Modifier
11+
import kotlin.reflect.KClass
1112
import kotlin.reflect.KFunction
1213
import kotlin.reflect.KParameter
14+
import kotlin.reflect.full.isSuperclassOf
1315
import kotlin.reflect.jvm.isAccessible
1416
import kotlin.reflect.jvm.javaConstructor
1517
import kotlin.reflect.jvm.javaMethod
@@ -181,6 +183,13 @@ sealed class FastKFunction<T> {
181183

182184
return if (parameters[0].kind == KParameter.Kind.INSTANCE) {
183185
instance ?: throw IllegalArgumentException("Function requires INSTANCE parameter, but is not present.")
186+
val instanceClazz = instance::class
187+
188+
(parameters[0].type.classifier as KClass<*>).also {
189+
if (!it.isSuperclassOf(instanceClazz))
190+
throw IllegalArgumentException("INSTANCE parameter required ${it.simpleName}, " +
191+
"but ${instanceClazz.simpleName} is present.")
192+
}
184193

185194
val generator = BucketGenerator(parameters, instance)
186195
val valueParameters = parameters.subList(1, parameters.size)

0 commit comments

Comments
 (0)