Support nullable Kotlin value class arguments
This commit skips the value class parameter instantiation for nullable types when a null argument is passed. Closes gh-32353
This commit is contained in:
@@ -313,18 +313,20 @@ public class InvocableHandlerMethod extends HandlerMethod {
|
||||
switch (parameter.getKind()) {
|
||||
case INSTANCE -> argMap.put(parameter, target);
|
||||
case VALUE, EXTENSION_RECEIVER -> {
|
||||
if (!parameter.isOptional() || args[index] != null) {
|
||||
Object arg = args[index];
|
||||
if (!(parameter.isOptional() && arg == null)) {
|
||||
if (parameter.getType().getClassifier() instanceof KClass<?> kClass) {
|
||||
Class<?> javaClass = JvmClassMappingKt.getJavaClass(kClass);
|
||||
if (KotlinDetector.isInlineClass(javaClass)) {
|
||||
argMap.put(parameter, KClasses.getPrimaryConstructor(kClass).call(args[index]));
|
||||
if (KotlinDetector.isInlineClass(javaClass)
|
||||
&& !(parameter.getType().isMarkedNullable() && arg == null)) {
|
||||
argMap.put(parameter, KClasses.getPrimaryConstructor(kClass).call(arg));
|
||||
}
|
||||
else {
|
||||
argMap.put(parameter, args[index]);
|
||||
argMap.put(parameter, arg);
|
||||
}
|
||||
}
|
||||
else {
|
||||
argMap.put(parameter, args[index]);
|
||||
argMap.put(parameter, arg);
|
||||
}
|
||||
}
|
||||
index++;
|
||||
|
||||
Reference in New Issue
Block a user