<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>