<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Feb 7, 2014 at 1:37 AM, M. J. Cho <span dir="ltr"><<a href="mailto:happybrown@naver.com" target="_blank">happybrown@naver.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="KO" link="blue" vlink="purple"><div><p class="MsoNormal" style="word-break:break-hangul"><span lang="EN-US" style="font-size:10.0pt;font-family:"\00b9d1\00c740 \00ace0\00b515";color:#1f497d">Wow!<u></u><u></u></span></p>
<p class="MsoNormal" style="word-break:break-hangul"><span lang="EN-US" style="font-size:10.0pt;font-family:"\00b9d1\00c740 \00ace0\00b515";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal" style="word-break:break-hangul">
<span lang="EN-US" style="font-size:10.0pt;font-family:"\00b9d1\00c740 \00ace0\00b515";color:#1f497d">Thanks Klimek! It works. (Your insight is definitely correct.)<u></u><u></u></span></p><p class="MsoNormal" style="word-break:break-hangul">
<span lang="EN-US" style="font-size:10.0pt;font-family:"\00b9d1\00c740 \00ace0\00b515";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal" style="word-break:break-hangul"><span lang="EN-US" style="font-size:10.0pt;font-family:"\00b9d1\00c740 \00ace0\00b515";color:#1f497d">Can I ask an another question?<u></u><u></u></span></p>
<p class="MsoNormal" style="word-break:break-hangul"><span lang="EN-US" style="font-size:10.0pt;font-family:"\00b9d1\00c740 \00ace0\00b515";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal" style="word-break:break-hangul">
<span lang="EN-US" style="font-size:10.0pt;font-family:"\00b9d1\00c740 \00ace0\00b515";color:#1f497d">When I set all includes paths completely, all return statements could be detected. <u></u><u></u></span></p><p class="MsoNormal" style="word-break:break-hangul">
<span lang="EN-US" style="font-size:10.0pt;font-family:"\00b9d1\00c740 \00ace0\00b515";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal" style="word-break:break-hangul"><span lang="EN-US" style="font-size:10.0pt;font-family:"\00b9d1\00c740 \00ace0\00b515";color:#1f497d">However, so many functions are detected due to included header files.<u></u><u></u></span></p>
<p class="MsoNormal" style="word-break:break-hangul"><span lang="EN-US" style="font-size:10.0pt;font-family:"\00b9d1\00c740 \00ace0\00b515";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal" style="word-break:break-hangul">
<span lang="EN-US" style="font-size:10.0pt;font-family:"\00b9d1\00c740 \00ace0\00b515";color:#1f497d">If I want to detect only functions in a target source file, what should I do?</span></p></div></div></blockquote>
<div><br></div><div>What I do is match on all nodes, and then filter the results based on the SourceLocation afterwards...</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div lang="KO" link="blue" vlink="purple"><div><p class="MsoNormal" style="word-break:break-hangul"><span lang="EN-US" style="font-size:10.0pt;font-family:"\00b9d1\00c740 \00ace0\00b515";color:#1f497d"><u></u><u></u></span></p>
<p class="MsoNormal" style="word-break:break-hangul"><span lang="EN-US" style="font-size:10.0pt;font-family:"\00b9d1\00c740 \00ace0\00b515";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal" style="word-break:break-hangul">
<span lang="EN-US" style="font-size:10.0pt;font-family:"\00b9d1\00c740 \00ace0\00b515";color:#1f497d">Thanks<u></u><u></u></span></p><p class="MsoNormal" style="word-break:break-hangul"><span lang="EN-US" style="font-size:10.0pt;font-family:"\00b9d1\00c740 \00ace0\00b515";color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif"">From:</span></b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif""> Manuel Klimek [mailto:<a href="mailto:klimek@google.com" target="_blank">klimek@google.com</a>] <br>
<b>Sent:</b> Friday, February 07, 2014 12:17 AM<br><b>To:</b> </span><span style="font-size:11.0pt">조명진</span><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif""><br><b>Cc:</b> clang-dev Developers<br>
<b>Subject:</b> Re: [cfe-dev] How to detect all return statements by Clang Libtooling?<u></u><u></u></span></p><div><div class="h5"><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><div><div><div><p class="MsoNormal">
<span lang="EN-US">On Thu, Feb 6, 2014 at 8:49 AM, </span>조명진<span lang="EN-US"> <<a href="mailto:happybrown@naver.com" target="_blank">happybrown@naver.com</a>> wrote:<u></u><u></u></span></p><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div><div><p class="MsoNormal"><span lang="EN-US">Hi all,<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"> <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">I’m trying to use clang libtooling for detecting all return statements.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"> <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">I used the “VisitReturnStmt” function but sometimes it is not working as follow case.<u></u><u></u></span></p><p class="MsoNormal">
<span lang="EN-US"> <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">//target code<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">class ExampleFrontendAction : public ASTFrontendAction {<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">public:<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">    virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI, StringRef file) {<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">        return new ExampleASTConsumer(&CI); // pass CI pointer to ASTConsumer<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">    }<u></u><u></u></span></p><p class="MsoNormal">
<span lang="EN-US">};<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">//target code end<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"> <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">//results<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">CXXMethodDecl 0x2468cb0 </project/llvm/Debug+Asserts/bin/a.cpp:107:5, line:115:5> CreateASTConsumer 'int *(int &, int)'<u></u><u></u></span></p><p class="MsoNormal">
<span lang="EN-US">|-ParmVarDecl 0x2468b60 <line:107:44, col:62> CI 'int &' invalid<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">|-ParmVarDecl 0x2468bd0 <col:66, col:76> file 'int' invalid<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">`-CompoundStmt 0x2469138 <col:82, line:115:5> invalid<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"> <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">As you can see, we cannot find any ReturnStmt. (It is included in CompoundStmt. Also the CompoundStmt is a leaf statement.)<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"> <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">How can I detect this case? Please help me! <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"> <u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">Thanks in advance.<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"> <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">Additional Question.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">Why does clang return “int *” instead of “ASTConsumer *” in the case of CreateASTConsumer method when I use getReturnType() in VisitFunctionDecl()?<u></u><u></u></span></p></div></div>
</blockquote><div><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span lang="EN-US">My guess is that the headers are not correctly found; are you sure you're using a compilation database that works?<u></u><u></u></span></p>
</div><div><p class="MsoNormal"><span lang="EN-US"> <u></u><u></u></span></p></div><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm"><div><div><p class="MsoNormal">
<span lang="EN-US"> <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">Any ideas?<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US"> <u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US">Brown.<u></u><u></u></span></p>
</div></div><p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US"><br>_______________________________________________<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/mailman/listinfo/cfe-dev</a><u></u><u></u></span></p></blockquote></div><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
</div></div></div></div></div></div></blockquote></div><br></div></div>