<div style="font-family: arial, helvetica, sans-serif; font-size: 10pt"><div dir="ltr">On Fri, Dec 7, 2012 at 6:34 AM, <a href="mailto:qiuyin@gmail.com">qiuyin@gmail.com</a> <span dir="ltr"><<a href="mailto:qiuyin@gmail.com" target="_blank">qiuyin@gmail.com</a>></span> wrote:<br>
<div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi there,<br>
<br>
I am thinking about reverse the order of arguments in a call expression with clang. I'm leveraging the refactoring tool and the AST matcher framework. I use a matcher to find those calls i'm interested in, rewrite the expr, and  insert one replacement. Things go tricky for nested calls. Because the refactoring tool applies replacements one by one, and order adjustment does not change the total text length, one replacement could overwrite prior changes. Do i have to implement my own replacement applying algo (i'm thinking about adding source range references to a replacement object, and applying them recursively), or is there a simple and better way to do this?<br>
</blockquote><div><br></div><div style>The problem is that I think the problem is not solvable in general - there is a class of replacements that's recursively applicable though. I think it makes sense to add support for those in the refactoring library. I have no clue yet how to do that though :)</div>
<div style><br></div><div style>The easy workaround is to do one non-overlapping refactoring at a time (that has worked every time so far for us)[</div><div style><br></div><div style>Cheers,</div><div style>/Manuel</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Thanks!<br>
<br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
</blockquote></div><br></div></div></div>