[ https://issues.apache.org/jira/browse/GROOVY-7758?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Shil Sinha resolved GROOVY-7758. -------------------------------- Resolution: Fixed > GroovyCastException when both @CompileStatic and @Newify are used > ----------------------------------------------------------------- > > Key: GROOVY-7758 > URL: https://issues.apache.org/jira/browse/GROOVY-7758 > Project: Groovy > Issue Type: Bug > Components: Static compilation > Affects Versions: 2.4.5 > Reporter: Natsuki Takanashi > Assignee: Shil Sinha > Fix For: 2.4.7 > > > The following code gives {{GroovyCastException}}. > {code} > class Main { > public static void main(String... args) { > Test test = new Test() > } > } > @CompileStatic @Newify > class Test { > private HashMap<String, A> hashMap = [:] > public Test() { > set() > test() > } > public void test() { > hashMap.each() { String string, A a -> > a.printString() > } > } > public void set() { > hashMap.put("aaa", B.new("xxx")) > hashMap.put("bbb", B.new("yyy")) > } > } > class A { > public String string = "" > public void printString() { > println(string) > } > } > class B extends A { > public B(String string) { > this.string = string > } > } > {code} > The code below is a part of the decompiled {{Test.class}}. Groovy tries to > cast {{this}} instead of {{a}}. > {code} > public Object doCall(String string, A a) { > > ((A)ScriptBytecodeAdapter.castToType(((_test_closure1)this).getThisObject(), > A.class)).printString(); > return null; > } > {code} > When {{@CompileStatic}} is omitted, or when {{@Newify}} is omitted and > {{B.new}} is replaced by {{new B}}, the code above gives no exception and > runs as expected. -- This message was sent by Atlassian JIRA (v6.3.4#6332)