<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<blockquote><font style="font-size:14.5px"><font style="font-family:Nylas-Pro, Helvetica, "Lucidia Grande", sans-serif">If you need semantic analysis such as name lookup, overload</font></font></blockquote>
<blockquote><font style="font-size:14.5px"><font style="font-family:Nylas-Pro, Helvetica, "Lucidia Grande", sans-serif">resolution, etc. for your changed code. For instance, you want to</font></font></blockquote>
<blockquote><font style="font-size:14.5px"><font style="font-family:Nylas-Pro, Helvetica, "Lucidia Grande", sans-serif">replace a type, which might transitively require to change types of</font></font></blockquote>
<blockquote><font style="font-size:14.5px"><font style="font-family:Nylas-Pro, Helvetica, "Lucidia Grande", sans-serif">other variables, function result- and parameter types. However, the</font></font></blockquote>
<blockquote><font style="font-size:14.5px"><font style="font-family:Nylas-Pro, Helvetica, "Lucidia Grande", sans-serif">AST was not designed with such a use case in mind and you will need to</font></font></blockquote>
<blockquote><font style="font-size:14.5px"><font style="font-family:Nylas-Pro, Helvetica, "Lucidia Grande", sans-serif">write a lot of code to handle special situations (e.g. re-do overload</font></font></blockquote>
<blockquote><font style="font-size:14.5px"><font style="font-family:Nylas-Pro, Helvetica, "Lucidia Grande", sans-serif">resolution with the new type; however the overload set depends on</font></font></blockquote>
<blockquote><font style="font-size:14.5px"><font style="font-family:Nylas-Pro, Helvetica, "Lucidia Grande", sans-serif">clang::Scope which is only available during parsing). I strongly</font></font></blockquote>
<blockquote><font style="font-size:14.5px"><font style="font-family:Nylas-Pro, Helvetica, "Lucidia Grande", sans-serif">suggest to pursue the parse-and-replace approach if possible.</font></font></blockquote>
<br>
<div>I see, in my case I think is crystal clear that I do not have to perform modifications in the AST so my life will be easier.</div>
<div>Thanks for the clarification and prompt response.</div>
<br>
<div>Bests,</div>
<div><signature id="initial">
<table cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="vertical-align:top"></td>
<td>
<div>Horro, M.</div>
<div style="font-size:0.9em;border-top:1px solid gray;min-width:250px;max-width:300px;margin-top:4px;padding-top:4px">
<div>
<div></div>
<div><a href="https://link.getmailspring.com/link/19D0AF02-E364-4894-BF8F-1536153EAFCC@getmailspring.com/0?redirect=http%3A%2F%2Fgac.udc.es%2F~horro&recipient=Y2ZlLWRldkBsaXN0cy5sbHZtLm9yZw%3D%3D">http://gac.udc.es/~horro</a></div>
<div></div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</signature></div>
<div class="gmail_quote_attribution">On Dec 5 2019, at 2:03 pm, Michael Kruse <cfe-dev@meinersbur.de> wrote:</div>
<blockquote>
<div>
<div>Am Di., 3. Dez. 2019 um 14:54 Uhr schrieb Marcos Horro Varela</div>
<div><marcos.horro@udc.es>:</div>
<blockquote>
<div>Thank you so much for your comments. I think I will go with the ASTFrontendAction in detriment of clang-tidy in order to have more "freedom" when writing the tool. Nonetheless, I am quite concerned regarding my decision of not modifying the AST. Maybe
 using the TreeTransform helper would be a better decision. On the other hand, I do not see the utility of performing modifications in the AST; could you provide me an example where it is useful rather than "just parsing and replacing code"?</div>
</blockquote>
<br>
<div>If you need semantic analysis such as name lookup, overload</div>
<div>resolution, etc. for your changed code. For instance, you want to</div>
<div>replace a type, which might transitively require to change types of</div>
<div>other variables, function result- and parameter types. However, the</div>
<div>AST was not designed with such a use case in mind and you will need to</div>
<div>write a lot of code to handle special situations (e.g. re-do overload</div>
<div>resolution with the new type; however the overload set depends on</div>
<div>clang::Scope which is only available during parsing). I strongly</div>
<div>suggest to pursue the parse-and-replace approach if possible.</div>
<br>
<div>Michael</div>
</div>
</blockquote>
</body>
</html>