[ https://issues.apache.org/jira/browse/GROOVY-8123?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Paul King closed GROOVY-8123. ----------------------------- > Wrong invokation target of static method > ---------------------------------------- > > Key: GROOVY-8123 > URL: https://issues.apache.org/jira/browse/GROOVY-8123 > Project: Groovy > Issue Type: Bug > Components: groovy-runtime > Affects Versions: 2.4.9 > Reporter: Jędrzej Dąbrowa > Assignee: Paul King > Fix For: 2.4.11 > > > Given following set of java classes: > {code:title=Interface.java|borderStyle=solid} > public interface Interface { > class ExternalInterface implements Interface {} > static Interface provide() { > new Throwable().printStackTrace(); > return new ExternalInterface(); > } > } > {code} > {code:title=MyInterface.java|borderStyle=solid} > public abstract class MyInterface implements Interface { > private static class MyInterfaceImpl extends MyInterface {} > public static MyInterface provide() { > return new MyInterfaceImpl(); > } > } > {code} > And below Groovy code: > {code:title=Test.groovy|borderStyle=solid} > class Test { > static void main(String[] args) { > MyInterface myInterface = MyInterface.provide() > } > } > {code} > It yields following result: > {noformat} > Exception in thread "main" > org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast > object 'Interface$ExternalInterface@24a35978' with class > 'Interface$ExternalInterface' to class 'MyInterface' > at > org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.continueCastOnSAM(DefaultTypeTransformation.java:405) > at > org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.continueCastOnNumber(DefaultTypeTransformation.java:319) > at > org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.castToType(DefaultTypeTransformation.java:232) > at > org.codehaus.groovy.runtime.ScriptBytecodeAdapter.castToType(ScriptBytecodeAdapter.java:603) > at Test.main(Test.groovy:9) > {noformat} > Stacktrace during creating object of invalid type is: > {noformat} > at Interface.provide(Interface.java:7) > at Interface$provide.call(Unknown Source) > at > org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) > at > org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) > at > org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117) > at Test.main(Test.groovy:9) > {noformat} > To me this seems to be a bug. Or is this expected behavior? -- This message was sent by Atlassian JIRA (v6.3.15#6346)