You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Eric Milles (Jira)" <ji...@apache.org> on 2021/12/19 16:45:00 UTC

[jira] [Closed] (GROOVY-7436) Multiple inheritance of traits - conflict resolution

     [ https://issues.apache.org/jira/browse/GROOVY-7436?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Eric Milles closed GROOVY-7436.
-------------------------------
    Resolution: Information Provided

> Multiple inheritance of traits - conflict resolution
> ----------------------------------------------------
>
>                 Key: GROOVY-7436
>                 URL: https://issues.apache.org/jira/browse/GROOVY-7436
>             Project: Groovy
>          Issue Type: Improvement
>            Reporter: Thornton Chamberlain
>            Priority: Major
>              Labels: traits
>
> {noformat}
> trait A {
>     String exec() {'A'}
> }
> trait B implements A {
>     String exec() {'B'}
> }
> trait C implements A {
> }
> class X implements A, B, C {}
> def x = new X()
> assert x.exec() == 'B'
> {noformat}
> An equivalent example in Scala will use the exec() implementation from B, as asserted.  Groovy will take the implementation from the last declared trait, C, which inherits the implementation from A but does not define its own implementation.  I think Groovy should use the implementation from the last declared trait that defines its own implementation.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)