<div dir="ltr"><div style>Hi javac folk!</div><div><br></div>This is a bug report for a serious bug: an infinite loop in javac that appears to have been introduced into jdk7 (also repro&#39;d in dk8) relatively recently, as discovered by my colleague Raluca.  She suspects this commit:<div>
<br></div><div><a href="http://hg.openjdk.java.net/jdk7u/jdk7u/langtools/rev/4baab658f357">http://hg.openjdk.java.net/jdk7u/jdk7u/langtools/rev/4baab658f357</a><br><div><br></div><div><div>#!/bin/bash</div><div>set -eu</div>
<div><br></div><div>mkdir -p /tmp/t9/baz</div><div>cd /tmp/t9</div><div><br></div><div>cat &gt; A.java &lt;&lt;&#39;EOF&#39;</div><div>import java.util.Map;</div><div>import java.util.Set;</div><div>import baz.Baz;</div><div>
public class A {</div><div>   private static class Foo&lt;M extends Map, S extends Set&gt; extends Bar&lt;M, S&gt; {</div><div>       @Override void run() {}</div><div>   }</div><div>   private static class Bar&lt;M extends Map, S extends Set&gt; extends Baz&lt;M, S&gt; {</div>
<div>       @Override void run() { }</div><div>   }</div><div>}</div><div>EOF</div><div><br></div><div>cat &gt; baz/Baz.java &lt;&lt;&#39;EOF&#39;</div><div>package baz;</div><div>import java.util.Map;</div><div>public class Baz &lt;M extends Map&gt; {</div>
<div>   void run() { }</div><div>}</div><div>EOF</div><div><br></div><div>javac baz/Baz.java</div><div>jar cvf libbaz.jar baz/Baz.class</div><div>javac -cp libbaz.jar A.java</div></div><div><br></div></div></div>