You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Stefan Wolf (JIRA)" <ji...@apache.org> on 2016/07/05 11:35:10 UTC

[jira] [Created] (GROOVY-7879) Groovy calls wrong method if there is a static method on an interface

Stefan Wolf created GROOVY-7879:
-----------------------------------

             Summary: Groovy calls wrong method if there is a static method on an interface
                 Key: GROOVY-7879
                 URL: https://issues.apache.org/jira/browse/GROOVY-7879
             Project: Groovy
          Issue Type: Bug
          Components: Compiler
    Affects Versions: 2.4.7
            Reporter: Stefan Wolf


If there is an interface having the static method {{foo}} and a class {{Impl}} implementing this interface also having a static method {{foo}}, then calling {{Impl.foo()}} calls the method on the interface. For an easy self contained example have a look at https://github.com/wolfs/groovy-static-interface-method-test/blob/master/src/test/groovy/StaticInterfaceTest.groovy.

This can yield class cast exceptions on Java 8 and from Java 9 build 125 onwards this yields 
{code}
java.lang.IncompatibleClassChangeError: Method ... must be InterfaceMethodref constant
{code}
This verification has been introduced here: https://bugs.openjdk.java.net/browse/JDK-8145148.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)