org.springframework.expression.spel.CodeFlow.toBoxedDescriptor() throws "Unexpected non primitive descriptor V" while trying to create a MethodReference for a method with a void return type.
For an analogous scenario using java.lang.Void as the return type, no exception is thrown.
I think while checking for primitives using method CodeFlow.toDescriptor() that "V" is returned for a void return type, but the returned "V" is not handled in the CodeFlow.toBoxedDesciptor() method.
Comment From: xixingya
Maybe Void is not boxed
Comment From: snicoll
There is indeed an inconsistency here that we attempt to box void for null safety reason but that's not necessary with void.
@rgrvontela that explains why Void works as it's a non-primitive type.
Comment From: sbrannen
I think the bug might be that org.springframework.expression.spel.CodeFlow.isPrimitive(String) should not return true for "V".
See also org.springframework.expression.spel.CodeFlow.insertBoxIfNecessary(...)
I'll look into it.