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:
Sébastien Deleuze
2024-03-03 22:23:57 +01:00
parent 877e0b1483
commit 516a203703
6 changed files with 86 additions and 20 deletions

View File

@@ -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++;