[ 
https://issues.apache.org/jira/browse/GROOVY-7930?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15511632#comment-15511632
 ] 

Paul King edited comment on GROOVY-7930 at 9/22/16 12:49 AM:
-------------------------------------------------------------

The workaround is to use:
{code}
trait Middle extends T {}
{code}
In fact it is probably clearer intent to do it that way. But given we support 
leaving it as interface, we should give the same error message in that case.


was (Author: paulk):
The workaround is to use:
{code}
trait Middle extends T {}
{code}

> @SelfType in hierarchy with an interface in the middle
> ------------------------------------------------------
>
>                 Key: GROOVY-7930
>                 URL: https://issues.apache.org/jira/browse/GROOVY-7930
>             Project: Groovy
>          Issue Type: Bug
>          Components: Compiler
>    Affects Versions: 2.4.7
>            Reporter: Daniil Ovchinnikov
>
> {code}
> interface Self {
>     def bar()
> }
> @SelfType(Self)
> trait T {
>     def foo() {
>         println "foo called"
>         bar()
>     }
> }
> interface Middle extends T {}
> class C implements Middle {}
> new C().foo()
> {code}
> Above code compiles fine but fails at run time with:
> {noformat}
> groovy.lang.MissingMethodException: No signature of method: 
> selftype.baseinterface.C.bar() is applicable for argument types: () values: []
> {noformat}
> The compilation should fail like if {{Middle}} was a trait.



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

Reply via email to