Fix code generation for null indexed argument value
This commit fixes code generation when an indexed constructor argument value is null as the method is overloaded and need the value to be cast to `Object`. Closes gh-31508
This commit is contained in:
@@ -235,6 +235,18 @@ class BeanDefinitionPropertiesCodeGeneratorTests {
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void constructorArgumentValuesWhenIndexedNullValue() {
|
||||
this.beanDefinition.getConstructorArgumentValues().addIndexedArgumentValue(0, (Object) null);
|
||||
compile((actual, compiled) -> {
|
||||
ConstructorArgumentValues argumentValues = actual.getConstructorArgumentValues();
|
||||
Map<Integer, ValueHolder> values = argumentValues.getIndexedArgumentValues();
|
||||
assertThat(values.get(0)).satisfies(assertValueHolder(null, null, null));
|
||||
assertThat(values).hasSize(1);
|
||||
assertThat(argumentValues.getGenericArgumentValues()).isEmpty();
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void constructorArgumentValuesWhenGenericValuesWithName() {
|
||||
this.beanDefinition.getConstructorArgumentValues().addGenericArgumentValue(String.class);
|
||||
@@ -255,7 +267,9 @@ class BeanDefinitionPropertiesCodeGeneratorTests {
|
||||
});
|
||||
}
|
||||
|
||||
private Consumer<ValueHolder> assertValueHolder(Object value, @Nullable Class<?> type, @Nullable String name) {
|
||||
private Consumer<ValueHolder> assertValueHolder(
|
||||
@Nullable Object value, @Nullable Class<?> type, @Nullable String name) {
|
||||
|
||||
return valueHolder -> {
|
||||
assertThat(valueHolder.getValue()).isEqualTo(value);
|
||||
assertThat(valueHolder.getType()).isEqualTo((type != null ? type.getName() : null));
|
||||
|
||||
Reference in New Issue
Block a user