<div dir="ltr">+matthew<br><br><div class="gmail_quote">On Sun, Mar 22, 2015 at 7:03 AM Johan Fänge <<a href="mailto:johanfange@gmail.com">johanfange@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><pre>I saw this mail from December and decided to give it a try. Short investigation below.<br></pre><pre>Best Regards<br></pre><pre>Johan Fänge<br></pre><pre>----------<br><br>It does indeed work on the given example after some tweaking, but breaks down on something slightly more complex.<br><br>I added another file:<br><br>~/test $ cat foo2.c<br>#include "foo.h"<br><br>int fox (int x, int y, int zz)<br>{<br>    return foo(x,x) + foo(y,y) - zz;<br>}<br><br>... and used this invocation: clang-rename foo2.c foo.c main.c -offset=46 -new-name=sum200 -pn -pl<br><br>As you can see below, it also tries to rename zz in foo2.c (which is at offset 46). What's worse: it overwrites the code following it, including the parenthesis after the argument list and the comma in the statement below.<br></pre><pre><br><br>~/test $ clang-rename foo2.c foo.c main.c -offset=46 -new-name=sum200 -pn -pl<br>clang-rename: could not find symbol at :1:1 (offset 46).<br>clang-rename: found name: fooclang-rename: renamed at: foo2.c:3:28<br>clang-rename: renamed at: foo2.c:5:34<br>clang-rename: renamed at: ./foo.h:1:12<br>clang-rename: renamed at: foo2.c:5:12<br>clang-rename: renamed at: foo2.c:5:23<br>clang-rename: renamed at: foo.c:1:5<br>clang-rename: renamed at: ./foo.h:1:12<br>clang-rename: renamed at: main.c:4:12<br>#include "foo.h"<br><br>int fox (int x, int y, int sum200<br>{<br>    return sum200(x,x) + sum200(y,y) - sum200<br>}<br>int sum200 (int x, int y)<br>{<br>    return x + y;<br>}<br>#include "foo.h"<br>int main (void)<br>{<br>    return sum200(1, 1);<br>}<br><br><br></pre><pre>Another example:</pre><pre>~/test $ cat foo2.c<br>#include "foo.h"<br><br>int fox (int x, int y, int zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz)<br>{<br>    return foo(x,x) + foo(y,y) - zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz;<br>}<br><br>~/test $ clang-rename foo2.c foo.c main.c -offset=46 -new-name=sum200 -pn -pl<br>clang-rename: could not find symbol at :1:1 (offset 46).<br>clang-rename: found name: fooclang-rename: renamed at: foo2.c:3:28<br>clang-rename: renamed at: foo2.c:5:34<br>clang-rename: renamed at: ./foo.h:1:12<br>clang-rename: renamed at: foo2.c:5:12<br>clang-rename: renamed at: foo2.c:5:23<br>clang-rename: renamed at: foo.c:1:5<br>clang-rename: renamed at: ./foo.h:1:12<br>clang-rename: renamed at: main.c:4:12<br>#include "foo.h"<br><br>int fox (int x, int y, int sum200zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz)<br>{<br>    return sum200(x,x) + sum200(y,y) - sum200zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz;<br>}<br>int sum200 (int x, int y)<br>{<br>    return x + y;<br>}<br>#include "foo.h"<br>int main (void)<br>{<br>    return sum200(1, 1);<br>}<br><br><br>--------<br><br>Your command invocation only includes main.c, try adding foo.c as well.

-M

><i> On Dec 9, 2014, at 2:27 PM, Dan Walmsley <<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">dan at walms.co.uk</a>> wrote:
</i>><i> 
</i>><i> Hello,
</i>><i> 
</i>><i>     I have managed to compile clang-rename and to get it to rename some symbols.
</i>><i> 
</i>><i> I have simple example I cant get to work correctly if anyone can help me out it would be greatly appreciated.
</i>><i> 
</i>><i> 3 files:
</i>><i> 
</i>><i> [foo.c]
</i>><i> int foo (int x, int y)
</i>><i> {
</i>><i>     return x + y;
</i>><i> }
</i>><i> 
</i>><i> [foo.h]
</i>><i> extern int foo (int x, int y);
</i>><i> 
</i>><i> [main.c]
</i>><i> #include "foo.h"
</i>><i> int main (void)
</i>><i> {
</i>><i>     return foo(1, 1);
</i>><i> }
</i>><i> 
</i>><i> [compile_commands.json]
</i>><i> [
</i>><i> {
</i>><i>   "directory": "c:\\ClangRenameTest\\",
</i>><i>   "command": "clang main.c",
</i>><i>   "file": "main.c"
</i>><i> },
</i>><i> {
</i>><i>   "directory": "c:\\ClangRenameTest\\",
</i>><i>   "command": "clang foo.c",
</i>><i>   "file": "foo.c"
</i>><i> }
</i>><i> ]
</i>><i> 
</i>><i> I run clang-rename with the following arguments:
</i>><i> 
</i>><i> "clang-rename main.c -offset=50 -i -new-name=sum -pl"
</i>><i> 
</i>><i> All the instances of foo are renamed to sum except in foo.c.
</i>><i> 
</i>><i> Can anyone help me how to get clang-rename to work for foo.c also?
</i>><i> 
</i>><i> Any advice is greatly appreciated.
</i>><i> 
</i>><i> Dan</i></pre></div>
______________________________<u></u>_________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">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/<u></u>mailman/listinfo/cfe-dev</a><br>
</blockquote></div></div>