Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
3.0.8
-
None
Description
Consider the following code:
@groovy.transform.TypeChecked public class T2 { def m(Object v) { if (v instanceof List) { System.err.println v.get(1) List x = (List)v; System.err.println x[0] //System.err.println v[0] <--- Uncoment to get error } else { System.err.println "Not a list" } } } T2 t = new T2(); t.m(Arrays.asList("a", "b"));
This code compiles. But when the marked line is uncommented, groovy produces an error:
/tmp/g/ee/T.groovy: 9: [Static type checking] - Cannot find matching method java.lang.Object#getAt(int). Please check if the declared type is correct and if the method exists.
@ line 9, column 32.
System.err.println v[0]
Basic inference works OK, as the v.get(int) call compiles, but seems the GDK enhancements (List.getAt which interfaces with the [] operator) are not considered.
Tested on Groovy Version: 3.0.8 JVM: 11.0.5 Vendor: Oracle Corporation OS: Linux