Skip to content

Commit b9e57c7

Browse files
committed
Consider Kotlin when checking if parameter names are available
See gh-33182
1 parent cd455a9 commit b9e57c7

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/bind/BindableRuntimeHintsRegistrar.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@
3333
import org.springframework.aot.hint.RuntimeHintsRegistrar;
3434
import org.springframework.beans.BeanUtils;
3535
import org.springframework.boot.context.properties.NestedConfigurationProperty;
36+
import org.springframework.core.KotlinDetector;
37+
import org.springframework.core.KotlinReflectionParameterNameDiscoverer;
3638
import org.springframework.core.ParameterNameDiscoverer;
39+
import org.springframework.core.PrioritizedParameterNameDiscoverer;
3740
import org.springframework.core.ResolvableType;
3841
import org.springframework.core.StandardReflectionParameterNameDiscoverer;
3942
import org.springframework.core.annotation.MergedAnnotations;
@@ -109,7 +112,16 @@ public static BindableRuntimeHintsRegistrar forTypes(Class<?>... types) {
109112
*/
110113
private final class Processor {
111114

112-
private static final ParameterNameDiscoverer PARAMETER_NAME_DISCOVERER = new StandardReflectionParameterNameDiscoverer();
115+
private static final ParameterNameDiscoverer parameterNameDiscoverer;
116+
117+
static {
118+
PrioritizedParameterNameDiscoverer discoverer = new PrioritizedParameterNameDiscoverer();
119+
if (KotlinDetector.isKotlinReflectPresent()) {
120+
discoverer.addDiscoverer(new KotlinReflectionParameterNameDiscoverer());
121+
}
122+
discoverer.addDiscoverer(new StandardReflectionParameterNameDiscoverer());
123+
parameterNameDiscoverer = discoverer;
124+
}
113125

114126
private final Class<?> type;
115127

@@ -159,7 +171,7 @@ private void handleConstructor(ReflectionHints hints) {
159171
}
160172

161173
private void verifyParameterNamesAreAvailable() {
162-
String[] parameterNames = PARAMETER_NAME_DISCOVERER.getParameterNames(this.bindConstructor);
174+
String[] parameterNames = parameterNameDiscoverer.getParameterNames(this.bindConstructor);
163175
if (parameterNames == null) {
164176
this.compiledWithoutParameters.add(this.bindConstructor.getDeclaringClass());
165177
}

0 commit comments

Comments
 (0)