<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    I'd like to propose deprecating and shortly thereafter removing the
    lit test runner feature that concatenates RUN lines ending in a
    trailing \<br>
    <br>
    <b>Rationale:</b><b><br>
    </b><br>
    <ul>
      <li>Trailing \ has a special meaning in various language standards
        that we support nowadays. In the C preprocessor, for example,
        it's handled _before_ comments. Various compilers handle this
        differently and it introduces needless incompatibilities.</li>
      <li>Forgetting the trailing \ between two RUN lines causes the
        lines to be run individually. People have checked in tests which
        they believed were getting run whereas the features being tested
        were actually silently broken. I've been committing fixes for
        some of these but it's exceptionally time-consuming to hunt them
        down after the fact.<br>
      </li>
      <li>Removing trailing \ will introduce the neat property that one
        RUN line corresponds precisely to one command that's executed.
        This is good for humans and will enable simplifications in the
        test runner.</li>
      <li>Eliminating the trailing \ syntax will unblock work on
        improved failure source locations in lit. Right now, when the
        builders encounter a test RUN failure it's a matter of guesswork
        as to which RUN line is failing, and the cycle of
        commit-fix-and-watch-buildbots is laborious. We've all wasted
        time with this at some point and can totally do better.<br>
      </li>
    </ul>
    <br>
    <b>Considerations:</b><br>
    <br>
    <ul>
      <li>Some run lines will now go over 80 columns. I suggest living
        with it as a fact of life, or simplifying the lines on a case by
        case basis -- exceptionally long RUN lines and pipe sequences
        can often be replaced with a more idiomatic sequence of commands
        that would help isolate test failures more rapidly.</li>
      <li>There are external projects relying on RUN lines with a
        trailing \. It'll be difficult to fix them all in one go.</li>
    </ul>
    <br>
    For these reasons, I propose fixing the core LLVM modules to begin
    and diagnosing with a lit warning for everyone else. That would be
    sufficient to switch on the enhanced lit diagnostics* with line
    information on the llvm.org builders which is where most time is
    wasted today.<br>
    <br>
    * Separate patch, will post after this one is resolved.<br>
    <br>
    Alp.<br>
    <br>
    <pre class="moz-signature" cols="72">-- 
<a class="moz-txt-link-freetext" href="http://www.nuanti.com">http://www.nuanti.com</a>
the browser experts
</pre>
  </body>
</html>