<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Please review the fix for [1] at [2]. The NPE showed up in code
    like:<br>
    <br>
    <font size="+1"><tt>class Outer<A extends Outer.Inner, B> {
      </tt><tt><br>
      </tt><tt>
            class Inner<Bc extends B> {}</tt><tt><br>
      </tt><tt>
        }</tt></font><br>
    <br>
    here attribution of type variable `A` during type enter phase will
    trigger attribution of class `Inner` while type variable `B` hasn't
    been attributed yet and thus its bound is still set to null. A
    similar problem arose a while ago see [3]. The issue provoking the
    current bug is that checks for cycles in type variables are done as
    soon as the type variable is attributed but in cases like the one
    above we can't do that until the type variable for the outer class
    has been attributed too.<br>
    <br>
    My first try was to create a fixup table that maps the outer type to
    the list of type variables defined by it or its members that happen
    to be types too, and once the compiler finish entering the outer
    class it would be safe to check for cycles in all the concerning
    type variables. I had a mild success here as there were some trivial
    cases that were working before that started failing. I realized that
    it was because the annotation processing phase was setting all the
    types to null, no bueno. So I decided to clone the type variables to
    be stored in the fixup table and do the cycle check on the clones
    which is what the current patch is doing.<br>
    <br>
    Thanks,<br>
    Vicente<br>
    <br>
    [1] <a class="moz-txt-link-freetext" href="https://bugs.openjdk.java.net/browse/JDK-8215482">https://bugs.openjdk.java.net/browse/JDK-8215482</a><br>
    [2] <a class="moz-txt-link-freetext" href="http://cr.openjdk.java.net/~vromero/8215482/">http://cr.openjdk.java.net/~vromero/8215482/</a><br>
    [3] <a class="moz-txt-link-freetext" href="https://bugs.openjdk.java.net/browse/JDK-6660289">https://bugs.openjdk.java.net/browse/JDK-6660289</a><br>
  </body>
</html>