<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    On a separate note, we already discussed how the need for ordering
    compilation units is somehow an artifact of the lossy way in which
    TransTypes massages trees; we are planning to remediate that in
    Valhalla - and I think once we do that, we'll be in a much better
    position to truly support byfile, w/o the need of special machinery
    (yayy!)<br>
    <br>
    Maurizio<br>
    <br>
    <div class="moz-cite-prefix">On 28/04/16 18:43, Liam Miller-Cushon
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAL4Qsgu-5A4NBeWkdHd6ad0MP_RpY8MOHFuAOWYD7TTi6pNb1Q@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">On Thu, Apr 28, 2016 at 1:55 AM,
            Maurizio Cimadamore <span dir="ltr"><<a
                moz-do-not-send="true"
                href="mailto:maurizio.cimadamore@oracle.com"><a class="moz-txt-link-abbreviated" href="mailto:maurizio.cimadamore@oracle.com">maurizio.cimadamore@oracle.com</a></a>></span>
            wrote:<br>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Hi
              Liam,<br>
              the approach you put forward seems sensible; one alternate
              approach would be to let the entire compilation unit
              through until Gen if a dependency is encountered rather
              than stopping at desugar - but I assume that's what you
              said it's problematic because of cycles?<br>
            </blockquote>
            <div><br>
            </div>
            <div>Right, the repro in my original message is an example
              of that. The compilation units are: [One, Two] and [Three,
              Four], and the superclass dependencies are: One ->
              Three, Four -> Two. So we can linearize the classes to
              group by compilation unit, or so the superclasses are
              encountered first, but not both.</div>
            <div> </div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">A
              meta-question: is it still worthwhile to have separate
              compilation policies? I see that at least two of them
              (ATTR_ONLY and CHECK_ONLY) can probably be replaced by
              other options (i.e. -XDshouldStop) - are there significant
              use cases out there relying on either byfile or simple?
              Given that, as it has been observed, javac will need to
              bypass the compilation policy anyway to guarantee the
              correctness of the generated code (i.e. that supertypes
              are desugared before subtypes) - can a client really
              blindly rely on the assumption that a compilation policy
              does what it says on the tin?</blockquote>
            <div><br>
            </div>
            <div>Consolidating the existing policies sounds like a good
              idea to me. I haven't seen any uses of ATTR_ONLY or
              CHECK_ONLY. Using bytodo isn't great for our purposes for
              the reasons Eddie described. In a previous thread [1] it
              was mentioned that byfile was originally supposed to
              become the default. Maybe it's time to consider replacing
              bytodo?</div>
            <div><br>
            </div>
            <div>[1] <a moz-do-not-send="true"
href="http://mail.openjdk.java.net/pipermail/compiler-dev/2015-August/009748.html">http://mail.openjdk.java.net/pipermail/compiler-dev/2015-August/009748.html</a></div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>