Shil Sinha created GROOVY-7813:
----------------------------------

             Summary: Calling a non-static outer class method from a static 
class passes STC
                 Key: GROOVY-7813
                 URL: https://issues.apache.org/jira/browse/GROOVY-7813
             Project: Groovy
          Issue Type: Bug
          Components: Static Type Checker
    Affects Versions: 2.4.6
            Reporter: Shil Sinha
            Assignee: Shil Sinha


Example:
{code}
@groovy.transform.TypeChecked
class Foo {
    def bar() { 2 }

    static class Baz {
        def doBar() {
            bar()
        }
    }
}
new Foo.Baz().doBar()
{code}

The {{doBar()}} call in the method above results in a MissingMethodException. 
If the code is statically compiled rather than just type checked, a VerifyError 
occurs instead.  

The usage of {{ClassNode#isStaticClass()}} within 
{{StaticTypeCheckingVisitor#findMethod(ClassNode, String, ClassNode...)}} seems 
to be responsible, as the former does not return true when the receiver is a 
static class.



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

Reply via email to