<div>Hi, everyone!</div><div>When I try to dump a Stmt to my own raw_ostream for debugging, the existing "dump" methods need parameter SourceManager that is hard to be obtained. So I think the new dump function in the following annotated diff would be useful.</div>
<div><br></div><div>Index: include/clang/AST/Stmt.h</div><div>===================================================================</div><div>--- include/clang/AST/Stmt.h<span class="Apple-tab-span" style="white-space:pre"> </span>(revision 158485)</div>
<div>+++ include/clang/AST/Stmt.h<span class="Apple-tab-span" style="white-space:pre">  </span>(working copy)</div><div>@@ -363,6 +363,7 @@</div><div>   /// This is useful in a debugger.</div><div>   LLVM_ATTRIBUTE_USED void dump() const;</div>
<div>   LLVM_ATTRIBUTE_USED void dump(SourceManager &SM) const;</div><div>+  void dump(raw_ostream &OS) const;</div><div>   void dump(raw_ostream &OS, SourceManager &SM) const;</div><div> </div><div>   /// dumpAll - This does a dump of the specified AST fragment and all subtrees.</div>
<div>Index: lib/AST/StmtDumper.cpp</div><div>===================================================================</div><div>--- lib/AST/StmtDumper.cpp<span class="Apple-tab-span" style="white-space:pre">      </span>(revision 158485)</div>
<div>+++ lib/AST/StmtDumper.cpp<span class="Apple-tab-span" style="white-space:pre">    </span>(working copy)</div><div>@@ -744,6 +744,12 @@</div><div>   llvm::errs() << "\n";</div><div> }</div><div> </div><div>
+void Stmt::dump(raw_ostream &OS) const {</div><div>+  StmtDumper P(0, OS, 4);</div><div>+  P.DumpSubTree(const_cast<Stmt*>(this));</div><div>+  OS << "\n";</div><div>+}</div><div>+</div><div> /// dumpAll - This does a dump of the specified AST fragment and all subtrees.</div>
<div> void Stmt::dumpAll(SourceManager &SM) const {</div><div>   StmtDumper P(&SM, llvm::errs(), ~0U);</div><div><br></div><div><br></div>-- <br>Zhenbo Xu<br>