James Kleeh created GROOVY-7994:
-----------------------------------

             Summary: Anonymous inner class believes protected method in 
parent's superclass returns Object
                 Key: GROOVY-7994
                 URL: https://issues.apache.org/jira/browse/GROOVY-7994
             Project: Groovy
          Issue Type: Bug
          Components: groovy-runtime
    Affects Versions: 2.4.7
            Reporter: James Kleeh


The below will execute the constructor on `Other` that takes an `Object`, even 
though `getName()` returns a `String`.

```
import groovy.transform.CompileStatic

@CompileStatic
class Parent {
    protected String getName() {
        "sally"
    }
}

@CompileStatic
class Child extends Parent {

    Inner doSomething() {
        return new Inner() {
            void go() {
                new Other(name)
            }
        }
    }

}

@CompileStatic
class Other {
    Other(Object object) {
        println "called with other"
    }
    Other(String string) {
        println "called with string"
    }
}

@CompileStatic
abstract class Inner {
    abstract void go()
}

Inner inner = new Child().doSomething()
inner.go()
```



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

Reply via email to