[ https://issues.apache.org/jira/browse/GROOVY-11450?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Paul King closed GROOVY-11450. ------------------------------ > flow typing can lead to type unsafe results when having nested ifs > ------------------------------------------------------------------ > > Key: GROOVY-11450 > URL: https://issues.apache.org/jira/browse/GROOVY-11450 > Project: Groovy > Issue Type: Bug > Components: Static Type Checker > Reporter: Thodoris Sotiropoulos > Assignee: Eric Milles > Priority: Minor > Fix For: 3.0.23, 4.0.23, 5.0.0-alpha-10 > > > I have the following program > {code:java} > class A { > Object clone() { return null; } > } > class Main { > public static void main(Object y) { > def x > x = new A() > if (false ){ > x = new A() > } else { > if (true) { > x = 1 > } > } > x.clone(); > } > } {code} > h3. Actual behavior > The program compiles, but I receive the following error at runtime: > {code:java} > Exception in thread "main" java.lang.ClassCastException: class > java.lang.Integer cannot be cast to class A (java.lang.Integer is in module > java.base of loader 'bootstrap'; A is in unnamed module of loader 'app') > at Main.main(test.groovy:16) {code} > h3. Expected behavior > The code should have been rejected with > {code:java} > org.codehaus.groovy.control.MultipleCompilationErrorsException: startup > failed: > test.groovy: 12: Cannot access method: clone() of class: java.lang.Object @ > line 12, column 5. > x.clone(); > ^1 error > {code} > -- This message was sent by Atlassian Jira (v8.20.10#820010)