<div dir="ltr">The following snippet compiles with javac7, but not javac8-b128.<div><br></div><div>Shouldn't the type parameter T be shadowing the inner class Test.T?<br><div><br></div><div>===</div><div><div>class Test {</div>
<div>Â class T<E> {}</div><div>Â abstract class One<E> {</div><div>Â Â abstract E foo();</div><div>Â }</div><div>Â abstract class Two<T> extends One<T> {</div><div>Â Â abstract T foo();</div><div>
 }</div>
<div>}</div></div><div>===</div><div><br></div><div><div>error: foo() in Test.Two cannot override foo() in Test.One</div><div>Â Â abstract T foo();</div><div>Â Â Â Â Â Â Â Â ^</div><div>Â return type T is not compatible with Test.T</div>
<div>Â where T,E are type-variables:</div><div>Â Â T extends Object declared in class Test.Two</div><div>Â Â E extends Object declared in class Test.One</div></div></div></div>