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

Jochen Theodorou commented on GROOVY-7930:
------------------------------------------

So all in all the title is misleading, because the issue we have been talking 
about here is unrelated to SelfType. In fact SelfType is totally ignored here 
and I think it is used only for CompileStatic. But this on the other hand I 
think is wrong too. Even if Middle is a trait the code should not compile, 
because C does not implement Self

> @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