Skip to content

Commit 1d6198e

Browse files
committed
Use ArgumentBucket and SpreadWrapper
1 parent 34703df commit 1d6198e

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

src/main/kotlin/com/fasterxml/jackson/module/kotlin/KotlinValueInstantiator.kt

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -162,13 +162,18 @@ internal class KotlinValueInstantiator(
162162
) {
163163
callable.isAccessible = true
164164
}
165-
val callableParametersByName = linkedMapOf<KParameter, Any?>()
166-
callableParameters.mapIndexed { idx, paramDef ->
167-
if (paramDef != null) {
168-
callableParametersByName[paramDef] = jsonParamValueList[idx]
165+
ArgumentBucket(callable.parameters).apply {
166+
callableParameters.forEachIndexed { idx, paramDef ->
167+
if (paramDef != null) {
168+
this[paramDef] = jsonParamValueList[idx]
169+
}
169170
}
171+
}.let {
172+
if (it.isFullInitialized())
173+
SpreadWrapper.call(callable, it.valueArray)
174+
else
175+
callable.callBy(it)
170176
}
171-
callable.callBy(callableParametersByName)
172177
}
173178

174179
}

0 commit comments

Comments
 (0)