Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.5.0-beta-1, 2.4.12
-
None
-
None
Description
@groovy.transform.CompileStatic class Foo { CharSequence makeEnv( env, StringBuilder result = new StringBuilder() ) { if( env instanceof File ) { env = env.toPath() } if( env instanceof String && env.contains('=') ) { result << 'export ' << env << ';' } return result.toString() } } assert new Foo().makeEnv('X=1') == 'export X=1;' Exception thrown org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'X=1' with class 'java.lang.String' to class 'java.lang.Iterable' at Foo.makeEnv(ConsoleScript5:10) at Foo.makeEnv(ConsoleScript5:4) at Foo$makeEnv.call(Unknown Source) at ConsoleScript5.run(ConsoleScript5:20)
Without CompileStatic it works as expected.
Attachments
Issue Links
- is broken by
-
GROOVY-8157 Flow typing doesn't work with assignment to a parameter
- Closed
- is duplicated by
-
GROOVY-8237 Invalid type inference when using CompileStatic annotation
- Closed
- links to