<html>
<head></head>
<body>
<blockquote class="replyBlock" style="border-left: 2px solid #000083; margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><p>Your issue is most confusing. You will need to show us the matcher code you're trying to get working.</p>
</blockquote><p>I've been looking for the <span class="asunto">'forEachConstructorInitializer' and it wasn't in ASTMatchers.h. I've been trying to replace these files(macros, internal, matchfinder...) for the ones in the svn, but it didn't work. </span></p>
<p><span class="asunto"> I don't want you to be thinking on the matcher, but my matcher, trying to bind every constructor initializer for fields in the class, is:<br /></span></p>
<p><span class="asunto">constructorDecl(<br />                    isDefinition(), <br />                    anyOf(<br />                        hasAnyConstructorInitializer(isWritten()), has(compoundStmt(has(stmt())))<br />                    ),<br />                    forEachConstructorInitializer(forField(decl().bind("CI")))        <br />            );<br /></span></p>
<p>I have tried to change '<span class="asunto">forEachConstructorInitializer' for 'forEach(ctorInitializer)', but the system can't identify ctorInitializer neither! :S</span></p>
<blockquote class="replyBlock" style="border-left: 2px solid #000083; margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><p>As for your build issues: try doing a clean rebuild, i.e. reconfigure (or run cmake again), and then make. I have never used ninja, so no idea if the issue could be on that front. Also make sure that you've not accidentally corrupted your LLVM/Clang checkout... But I hope you already tried these.</p>
</blockquote><p>I don't know why, but if I run ninja with "sudo", it works fine now. </p>
<div><em>El día 26 sep 2013 14:28, Gabor Kozar <kozargabor@gmail.com> escribió:</em></div><blockquote class="replyBlock" style="border-left: 2px solid #000083; margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div>Replying on cfe-dev.</div><div> </div><div>Your issue is most confusing. You will need to show us the matcher code you're trying to get working.</div><div> </div><div>By the way, you do not need to place your own matchers in ASTMatchers.h, you can create an own header file, like so:</div><div> </div><div>#include "clang/ASTMatchers/ASTMatchersMacros.h"</div><div>#include "clang/ASTMatchers/ASTMatchersInternal.h"</div><div> </div><div>namespace clang {</div><div>namespace ast_matchers {</div><div> </div><div>// your matchers here</div><div> </div><div>} // end namespace ast_matchers</div><div>} // end namespace clang</div><div> </div><div>Do not forget the header guard of course and anything else you may need.</div><div> </div><div>As for your build issues: try doing a clean rebuild, i.e. reconfigure (or run cmake again), and then make. I have never used ninja, so no idea if the issue could be on that front. Also make sure that you've not accidentally corrupted your LLVM/Clang checkout... But I hope you already tried these.</div><div> </div><div id="sig19426269"><div class="signature">-- </div><div class="signature">Gábor Kozár -- ShdNx</div><div class="signature">kozargabor@gmail.com</div><div class="signature"> </div></div><div> </div><div> </div><div>On Thu, Sep 26, 2013, at 11:29, Pedro Delgado Perez wrote:</div><blockquote class="replyBlock" style="border-left: 2px solid #000083; margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><p>Hi Gábor,</p>
<p>Sorry to write you directly, but I don't know why I can't post messages in cfe-dev...</p>
<p>I get through you because, some months ago, you told me what could I do when a matcher in <a href="http://clang.llvm.org/docs/LibASTMatchersReference.html" target="_blank">http://clang.llvm.org/docs/LibASTMatchersReference.html</a></p>
<div>was no present in my ASTMatchers.h.</div><p>Now, I'm trying to integrate the matcher forEachConstructorInitializer in</p>
<div><a href="http://llvm.org/svn/llvm-project/cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h" target="_blank">http://llvm.org/svn/llvm-project/cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h</a></div><p>Firstly, I have included it in my ASTMatchers, but I don't know why the system is not recognizing this new matcher. So I have put it in my own source file. Now, the system gives me the next problem and I would like to know how could I solve this:</p>
<p>CTD_operator.cpp:42:29: error: calling a private constructor of class 'clang::ast_matchers::internal::BoundNodesTreeBuilder'</p>
<div>             BoundNodesTreeBuilder InitBuilder(*Builder);</div><div>                                   ^</div><div>/usr/local/include/clang/ASTMatchers/ASTMatchersInternal.h:178:3: note: declared private here</div><div>  BoundNodesTreeBuilder(const BoundNodesTreeBuilder &) LLVM_DELETED_FUNCTION;</div><div>  ^</div><div>CTD_operator.cpp:45:25: error: no viable conversion from 'clang::ast_matchers::internal::BoundNodesTreeBuilder' to 'const clang::ast_matchers::internal::BoundNodesTree'</div><div>               Result.addMatch(InitBuilder);</div><div>                               ^~~~~~~~~~~</div><div>/usr/local/include/clang/ASTMatchers/ASTMatchersInternal.h:113:7: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from</div><div>      'clang::ast_matchers::internal::BoundNodesTreeBuilder' to 'const clang::ast_matchers::internal::BoundNodesTree &' for 1st argument</div><div>class BoundNodesTree {</div><div>      ^</div><div>/usr/local/include/clang/ASTMatchers/ASTMatchersInternal.h:172:39: note: passing argument to parameter 'Bindings' here</div><div>  void addMatch(const BoundNodesTree& Bindings);</div><div>                                      ^</div><div>CTD_operator.cpp:48:14: error: 'operator=' is a private member of 'clang::ast_matchers::internal::BoundNodesTreeBuilder'</div><div>           *Builder = Result;</div><div>           ~~~~~~~~ ^ ~~~~~~</div><div>/usr/local/include/clang/ASTMatchers/ASTMatchersInternal.h:179:8: note: declared private here</div><div>  void operator=(const BoundNodesTreeBuilder &) LLVM_DELETED_FUNCTION;</div><div>       ^</div><div> </div><p>Should I also change ASTMatchersInternal.h?? Do you recommend me to replace these header files for the last version?</p>
<p>How can I achieve that the system is aware of the changes I introduce in these files? I have a Makefile and only write "make" from the shell... Since two days ago, I was using ninja, but I don't know why, suddenly, start giving this fail:</p>
<p>pedro@hal ~/clang-llvm/build $ ninja</p>
<p>[6/745] Building CXX object lib/Target/Hexagon/CMakeFiles/LLVMHexagonCodeGen.dir/HexagonRemoveSZExtArgs.cpp.o</p>
<div>FAILED: /usr/local/bin/clang++   -D_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -fPIC -fvisibility-inlines-hidden -Wall -W -Wno-unused-parameter -Wwrite-strings -Wmissing-field-initializers -pedantic -Wno-long-long -Wcovered-switch-default -Wnon-virtual-dtor -fcolor-diagnostics -fno-rtti  -Ilib/Target/Hexagon -I/home/pedro/clang-llvm/llvm/lib/Target/Hexagon -Iinclude -I/home/pedro/clang-llvm/llvm/include    -fno-exceptions -fno-exceptions -MMD -MT lib/Target/Hexagon/CMakeFiles/LLVMHexagonCodeGen.dir/HexagonRemoveSZExtArgs.cpp.o -MF "lib/Target/Hexagon/CMakeFiles/LLVMHexagonCodeGen.dir/HexagonRemoveSZExtArgs.cpp.o.d" -o lib/Target/Hexagon/CMakeFiles/LLVMHexagonCodeGen.dir/HexagonRemoveSZExtArgs.cpp.o -c /home/pedro/clang-llvm/llvm/lib/Target/Hexagon/HexagonRemoveSZExtArgs.cpp</div><div>error: unable to open output file 'lib/Target/Hexagon/CMakeFiles/LLVMHexagonCodeGen.dir/HexagonRemoveSZExtArgs.cpp.o': 'Error opening output file 'lib/Target/Hexagon/CMakeFiles/LLVMHexagonCodeGen.dir/HexagonRemoveSZExtArgs.cpp.o''</div><div>1 error generated.</div><div>[6/745] Linking CXX static library lib/libLLVMInstrumentation.a</div><div>ninja: build stopped: subcommand failed.</div><div> </div><div> </div><div>I don't know what is "HexagonRemoveSZExtArgs.cpp.o" :S</div><p>Thanks,</p>
<p>Pedro.</p>
</blockquote></blockquote>
</body>
</html>