<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Jun 9, 2014 at 7:37 PM, victor <span dir="ltr"><<a href="mailto:pedretti_86@hotmail.com" target="_blank">pedretti_86@hotmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div dir="ltr">Hello,<br><br>I'm having a strange problem with my clang tool and I would like to report it because maybe I'm doing something wrong, but it might be a bug. <br><br>My tool simply takes a source file, performs a change in the code and saves the new version. The program is under the version control system git and the new version is stored in a new git branch. This process is done a finite number of times and I reset the Rewriter object between a version and the next one (so that the change is not present in the rest of versions) in the following way:<br>
<br>Rewrite = Rewriter();<br>Rewrite.setSourceMgr(Context->getSourceManager(), Context->getLangOpts());<br><br>Everything seemed to work right, but the other day I tested my tool with a program and I found something really strange. The problem is that the first and only the first change performed in the code remains in all the following versiones. For instance, if I insert a comment in each of the lines:<br>
<br>Original:<br>int method(int a){<br>    int b = a + 1;<br>    return b;<br>}<br><br>First version:<br>/*1*/ int method(int a){<br>    int b = a + 1;<br>    return b;<br>}<br><br>Second version:<br>/*1*/ int method(int a){<br>
/*2*/      int b = a + 1;<br>          return b;<br>}<br><br>Third version:<br>/*1*/ int method(int a){<br>          int b = a + 1;<br>/*3*/    return b;<br>}<br><br><br>The problem is that the comment "/*1*/" should be only in the first version, but not in the rest. As you can see, "/*2*/" is not in the third version and that is the expected.  <br>
<br>I have tried a lot of things, but nothing seems to solve this issue that only appears in this and other program that I tested today.<br><br>What could be happening here?<br><br>Thanks in advance.<br></div></div></blockquote>
<div><br></div><div>My suggestion would be to output all the changes first, and then apply them with a newly created source-manager and rewriter after-the-fact. That way, you avoid any problems of how the source manager and rewriter interact. </div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div dir="ltr">                                       </div></div>
<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>
<br></blockquote></div><br></div></div>