[ https://issues.apache.org/jira/browse/GROOVY-7859?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Shil Sinha updated GROOVY-7859: ------------------------------- Description: Method pointer expressions are not type checked (with STC enabled). The following example should not compile for a number of reasons: {code} @groovy.transform.TypeChecked void test() { def x = 'abc'.&bar //bar is not a String method x() // groovy.lang.MissingMethodException x = String.&length //length is a non-static method x() // java.lang.IllegalArgumentException: object is not an instance of declaring class x = String.&size //size is a non-static extension method x() // java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.String } test() {code} was: The following currently passes static type checking: {code} @groovy.transform.CompileStatic void test() { def x = String.&length x() } test() {code} At runtime, it fails with: {quote} java.lang.IllegalArgumentException: object is not an instance of declaring class {quote} If {{String.&length}} is replaced with {{String.&size}}, or a pointer to any extension method, it still passes STC, but fails with a ClassCastException instead. > Erroneous method pointer expressions pass STC > --------------------------------------------- > > Key: GROOVY-7859 > URL: https://issues.apache.org/jira/browse/GROOVY-7859 > Project: Groovy > Issue Type: Bug > Components: Static Type Checker > Affects Versions: 2.4.7 > Reporter: Shil Sinha > > Method pointer expressions are not type checked (with STC enabled). The > following example should not compile for a number of reasons: > {code} > @groovy.transform.TypeChecked > void test() { > def x = 'abc'.&bar //bar is not a String method > x() // groovy.lang.MissingMethodException > x = String.&length //length is a non-static method > x() // java.lang.IllegalArgumentException: object is not an instance of > declaring class > x = String.&size //size is a non-static extension method > x() // java.lang.ClassCastException: java.lang.Class cannot be cast to > java.lang.String > } > test() > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)