<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p>Hi,</p>
<p>one question that came to my mind because of Joel's Mail:</p>
<p>Is it possible to run in multiple passes?<br>
My use-case is adding `const` to variables that could be 'const'
but aren't. If you declare multiple variables like `int not_const,
const_variable;`<br>
the transformation requires splitting these up, first -> `int
not_const; int const_variable;` and then do the `const`
transformation -> `int not_const; const int const_variable;`.</p>
<p>I have implemented both transformations in clang-tidy (only
partially landed yet) but there is no easy way I can run them in
one check. The current workflow<br>
pretty much forces us to run clang-tidy multiple times and
converge to the final solution.</p>
<p>If your framework could give an improvement in this place, would
be awesome! And I think worth to consider anyway If we change the
way<br>
we do transformations.</p>
<p>Best, Jonas<br>
</p>
<div class="moz-cite-prefix">Am 16.11.18 um 16:22 schrieb Yitzhak
Mandelbaum via cfe-dev:<br>
</div>
<blockquote type="cite"
cite="mid:CAKTLd7x=aHvA32X4MufHdhYJbkQys5VYR1U2ywtowPYHMGb_4w@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div class="gmail_default"><font face="arial, helvetica,
sans-serif">Hi all,</font></div>
<div class="gmail_default"><font face="arial, helvetica,
sans-serif"><br>
</font></div>
<div class="gmail_default"><font face="arial, helvetica,
sans-serif">I have a proposal for a framework that makes
it easier to write source to source transformations with
the clang::Tooling libraries, including clang-tidy
checks.</font></div>
<div class="gmail_default"><font face="arial, helvetica,
sans-serif"><br>
</font></div>
<div class="gmail_default"><font face="arial, helvetica,
sans-serif">The full proposal is in this doc:</font></div>
<div class="gmail_default"><font face="arial, helvetica,
sans-serif"><br>
</font></div>
<div class="gmail_default"><font face="arial, helvetica,
sans-serif"><a
href="https://docs.google.com/document/d/1ppw0RhjwsrbBcHYhI85pe6ISDbA6r5d00ot3N8cQWeQ/edit?usp=sharing"
moz-do-not-send="true">https://docs.google.com/document/d/1ppw0RhjwsrbBcHYhI85pe6ISDbA6r5d00ot3N8cQWeQ/edit?usp=sharing</a></font><br>
</div>
<div class="gmail_default"><font face="arial, helvetica,
sans-serif"><br>
</font></div>
<div class="gmail_default"><font face="arial, helvetica,
sans-serif">From the doc:</font></div>
<div class="gmail_default"><font face="arial, helvetica,
sans-serif">Transformer is a framework that aims to
simplify development of clang-based source-to-source
transformations. It focuses on the particular class of
transformations that act only locally — that is, use
local information about the code and make local changes
(like a syntax-aware “find-and-replace”); and at scale —
that is, will be carried out on many source files. The
target audience is users that are comfortable with, or
willing to become comfortable with, the clang AST
matchers library.<br>
</font></div>
<div class="gmail_default"><font face="arial, helvetica,
sans-serif"><br>
</font></div>
<div class="gmail_default"><font face="arial, helvetica,
sans-serif">I have a working prototype of this library
which I've used on small examples inside Google. I plan
to put together a patch for reference next week,
although the doc should stand on its own.</font></div>
<div class="gmail_default"><font face="arial, helvetica,
sans-serif"><br>
</font></div>
<div class="gmail_default"><font face="arial, helvetica,
sans-serif">Thanks!</font></div>
<div class="gmail_default"><font face="arial, helvetica,
sans-serif">Yitzhak Mandelbaum</font></div>
</div>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
cfe-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>
<a class="moz-txt-link-freetext" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a>
</pre>
</blockquote>
</body>
</html>