[ https://issues.apache.org/jira/browse/GROOVY-7436?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14561827#comment-14561827 ]
Thornton Chamberlain commented on GROOVY-7436: ---------------------------------------------- I was just thinking the above example would be better if op1() were a template method, so {noformat}String op1() {"${op2()}${op3()}"}{noformat} Then the assert would be x.op1() == 'BC', but we get 'nullC' instead. > Multiple inheritance of traits - conflict resolution > ---------------------------------------------------- > > Key: GROOVY-7436 > URL: https://issues.apache.org/jira/browse/GROOVY-7436 > Project: Groovy > Issue Type: Bug > Reporter: Thornton Chamberlain > Labels: usertask > > {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 (v6.3.4#6332)