Is there a way to avoid awkward typing issues with literals as in this case:
@CompileStatic
void f() {
Map<String, Object> x = [a: '1']
println x + [b: 2]
}
This results in the following errors in 2.4.5:
[Static type checking] - Incompatible generic argument types. Cannot assign
java.util.LinkedHashMap <java.lang.String, java.lang.String> to: java.util.Map
<String, Object>
at line: 3, column: 27
[Static type checking] - Cannot call <K,V> java.util.LinkedHashMap
<java.lang.String, java.lang.String>#plus(java.util.Map <java.lang.String,
java.lang.String>) with arguments [java.util.LinkedHashMap <java.lang.String,
java.lang.Integer>]
at line: 4, column: 13
It seems that the static compiler has issues with inferring RHS types. I think
it might be similar to this case I run into from time to time:
@CompileStatic
void g(List<Integer> items) {}
@CompileStatic
void h() {
g(Collections.emptyList())
}
Results in:
[Static type checking] - Cannot call ConsoleScript6#g(java.util.List
<java.lang.Integer>) with arguments [java.util.List <T extends
java.lang.Object>]
Jason Winnebeck
----------------------------------------------------------------------
This email message and any attachments are for the sole use of the intended
recipient(s). Any unauthorized review, use, disclosure or distribution is
prohibited. If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message and any attachments.