Christopher Smith created GROOVY-9796:
-----------------------------------------
Summary: Static type checker doesn't backtrack when solving
generics
Key: GROOVY-9796
URL: https://issues.apache.org/jira/browse/GROOVY-9796
Project: Groovy
Issue Type: Bug
Components: Static Type Checker
Affects Versions: 3.0.6
Reporter: Christopher Smith
When a method pipeline involves generics, the static type checker is greedy and
tends to be overly specific, producing errors when the correct answer involves
relaxing to a common bound.
{code:groovy}
@CompileStatic
Number returnANumber() {
Number number = Optional.of(1234 as Integer) // should infer Optional<Number>
orElse(42.0 as Double)
}
{code}
{code}
[Static type checking] - Cannot find matching method
java.util.Optional#orElse(java.lang.Double). Please check if the declared type
is correct and if the method exists.
{code}
Explicitly inserting a type witness `Optional.<Number>of` works.
Note: This _might_ be a duplicate of GROOVY-8103, but I'm unable to tell
precisely. 3.0.6 was released one week after it was marked resolved.
GROOVY-8961 is marked fixed in 3.0.6, but I'm having the problem there.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)