Sébastien Deleuze opened SPR-15942 and commented
As raised and discuss on KT-19592 Kotlin issue, null-safety of Spring API does not apply to generic type arguments. To do so, after KT-19592 being fixed we would have to use ElementType.TYPE_USE
but its scope is too wide to make it usable for us at @TypeQualifierDefault
level of @Nullable
and @NonNullApi
.
Another solution would be to add ElementType.TYPE_USE
at @Target
and annotate every generic type argument of Spring API, maybe that could be done via introducing a @NonNull
annotation that would also be useful for #20311.
Issue Links: - #20311 Revisit nullability annotations towards GA ("depends on")
Referenced from: commits https://github.com/spring-projects/spring-framework/commit/0e1be82cfbc5b31bc8edcbec81feb08a99d9c3de, https://github.com/spring-projects/spring-framework/commit/1bc93e3d0f2bd3ffc6b48662073a427c31088b3d
Comment From: spring-projects-issues
Sébastien Deleuze commented
I have to postpone this improvement to a future release since there are flaws in current support that need to be fixed, see this detailed description for more info.
Comment From: spring-projects-issues
Sébastien Deleuze commented
See related discussion about Kotlin artifact with meta-annotations for Java types.
Juergen Hoeller I have added my feedback on their PR. My main concern is that current plan is to have a Kotlin centric meta-annotations library instead of a JVM one that could be use for more wide use cases, including pure Java projects.
Comment From: spring-projects-issues
Sébastien Deleuze commented
Latest update on that topic: I have asked to JetBrains to not make the upcoming meta-annotation library Kotlin specific since the scope is wider (cf. our usage on Spring which is also useful for Java developers via IDE and static code analysis tools) and also asked if it could avoid to use enums for annotation attribute value in order to avoid compilation warnings like we have currently with When.MAYBE
when using Spring null-safety annotations without JSR 305 in the classpath.
Comment From: liuHongJie1217
lol
Comment From: sdeleuze
Will be covered as part of #28797.