[cfe-dev] Rewriting function calls

Manuel Klimek klimek at google.com
Fri Dec 7 08:52:05 PST 2012


On Fri, Dec 7, 2012 at 5:42 PM, Yin Qiu <qiuyin at gmail.com> wrote:

>
> 在 2012-12-7,15:15,Manuel Klimek <klimek at google.com> 写道:
>
> > On Fri, Dec 7, 2012 at 6:34 AM, qiuyin at gmail.com <qiuyin at gmail.com>
> wrote:
> > Hi there,
> >
> > 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?
> >
> > 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 :)
> >
> > The easy workaround is to do one non-overlapping refactoring at a time
> (that has worked every time so far for us)[
> >
>
> Can you please share a little bit more details about your workaround? For
> this particular nested call case, did you mean running the refactoring tool
> for several passes? If so, I may not be able to adopt this approach because
> in my case a partially replaced function call cannot compile, which means
> the AST may not be well built.
>

If you tell me more about your specific case, I might be able to come up
with ideas that apply to it directly :)

Cheers,
/Manuel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20121207/befa84ea/attachment.html>


More information about the cfe-dev mailing list