You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Dmitry Ovchinnikov (JIRA)" <ji...@apache.org> on 2015/05/04 17:53:06 UTC

[jira] [Created] (GROOVY-7412) Map-to-interface cast: map method definition does not override the default method

Dmitry Ovchinnikov created GROOVY-7412:
------------------------------------------

             Summary: Map-to-interface cast: map method definition does not override the default method
                 Key: GROOVY-7412
                 URL: https://issues.apache.org/jira/browse/GROOVY-7412
             Project: Groovy
          Issue Type: Bug
          Components: groovy-runtime
    Affects Versions: 2.4.3
            Reporter: Dmitry Ovchinnikov


The following code

{code:groovy}

import groovy.lang.GroovyShell;
import org.codehaus.groovy.control.CompilerConfiguration;

public class InterfaceDefaultMethods {

    public static void main(String... args) throws Exception {
        final CompilerConfiguration cc = new CompilerConfiguration();
        cc.setTargetBytecode(CompilerConfiguration.JDK8);
        final GroovyShell shell = new GroovyShell(cc);
        final X x = (X) shell.evaluate("[x : {-> 3}, z: {-> 19}] as " + X.class.getCanonicalName());
        System.out.format("x = %d, y = %d, z = %d%n", x.x(), x.y(), x.z());
    }

    public interface X {

        default int x() {
            return 1;
        }

        default int y() {
            return 2;
        }

        int z();
    }
}
{code}

produces

{noformat}
x = 1, y = 2, z = 19
{noformat}

but x must be 3.



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