Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.4.8
-
None
Description
This code could be successfully compiled and executed.
@CompileStatic static def method(List<? extends Serializable> captured) { captured.add('some string') return captured } println method(new ArrayList<Integer>())
Looks like type check in groovy doesn't work with captured types. Is it a bug?
Is there any documentation about generics in groovy?
P.S.:
Another kind of strange behaviour:
@CompileStatic static def method() { List<Integer> list = new ArrayList<>() List<? extends Serializable> captured = list captured.add('some string') //Error:(7, 5) Groovyc: [Static type checking] - Cannot call java.util.ArrayList <java.lang.Integer>#add(java.lang.Integer) with arguments [java.lang.String] return captured }
Somehow type checking infered type of 'captured' variable to java.util.ArrayList <java.lang.Integer>
Attachments
Issue Links
- is related to
-
GROOVY-9074 CompileStatic does not throw expected exception
- Resolved
- links to