Details
Description
Follow up to GROOVY-10756. Blending wildcard and unresolved parameterized type is incomplete.
Consider the following:
interface Handle { int getCount() } class HandleContainer<H extends Handle> { H handle } interface Input { HandleContainer<? extends Handle> getResult(key) } interface State { def <X extends Handle> HandleContainer<X> getResult(key) } void test(Input input, State state) { def container = state.getResult('k') ?: input.getResult('k') // HERE: HandleContainer<# extends Handle> and HandleContainer<? extends Handle> Handle handle = container.handle Integer count = handle.count assert count == 1 } Handle h = {->1} def c = new HandleContainer(handle: h) test({k->c} as Input, {k->c} as State)