KotlinDetector.hasSerializableAnnotation goes into infinite recursion when fed a self-referential generic type such as Guava's ImmutableEnumSet. Minimal reproducing example:
import com.google.common.collect.Sets;
import org.springframework.core.KotlinDetector;
import org.springframework.core.ResolvableType;
public class KotlinDetectorReproducer {
enum Foo {
BAR,
BAZ, // Makes sure that `immutableEnumSet` doesn't produce a singleton set object
}
public static void main(String[] args) {
KotlinDetector.hasSerializableAnnotation(
ResolvableType.forInstance(Sets.immutableEnumSet(Foo.BAR, Foo.BAZ))
);
}
}
KotlinDetector.hasSerializableAnnotationgoes into infinite recursion when fed a self-referential generic type such as Guava'sImmutableEnumSet. Minimal reproducing example: