And this is not fixed with r160355?<div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jul 17, 2012 at 10:45 AM, Alexander Potapenko <span dir="ltr"><<a href="mailto:glider@google.com" target="_blank">glider@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Daniel,<br>
<br>
this change broke ASan build on Linux x86_64:<br>
<br>
llvm[4]: Linking Release+Asserts unit test Tooling (without symbols)<br>
Undefined symbols for architecture x86_64:<br>
  "clang::ast_matchers::MatchFinder::MatchCallback::~MatchCallback()",<br>
referenced from:<br>
      clang::ast_matchers::RefactoringCallbacksTest_ReplacesStmtsWithString_Test::TestBody()<br>
in RefactoringCallbacksTest.o<br>
      clang::ast_matchers::RefactoringCallbacksTest_ReplacesStmtsInCalledMacros_Test::TestBody()<br>
in RefactoringCallbacksTest.o<br>
      clang::ast_matchers::RefactoringCallbacksTest_IgnoresStmtsInUncalledMacros_Test::TestBody()<br>
in RefactoringCallbacksTest.o<br>
      clang::ast_matchers::RefactoringCallbacksTest_ReplacesInteger_Test::TestBody()<br>
in RefactoringCallbacksTest.o<br>
      clang::ast_matchers::RefactoringCallbacksTest_ReplacesStmtWithStmt_Test::TestBody()<br>
in RefactoringCallbacksTest.o<br>
      clang::ast_matchers::RefactoringCallbacksTest_ReplacesIfStmt_Test::TestBody()<br>
in RefactoringCallbacksTest.o<br>
      clang::ast_matchers::RefactoringCallbacksTest_RemovesEntireIfOnEmptyElse_Test::TestBody()<br>
in RefactoringCallbacksTest.o<br>
      ...<br>
  "clang::ast_matchers::MatchFinder::MatchFinder()", referenced from:<br>
      void clang::ast_matchers::expectRewritten<clang::ast_matchers::internal::Matcher<clang::Stmt><br>
>(std::string const&, std::string const&,<br>
clang::ast_matchers::internal::Matcher<clang::Stmt> const&,<br>
clang::ast_matchers::RefactoringCallback&) in<br>
RefactoringCallbacksTest.o<br>
  "clang::ast_matchers::MatchFinder::addMatcher(clang::ast_matchers::internal::Matcher<clang::Stmt><br>
const&, clang::ast_matchers::MatchFinder::MatchCallback*)", referenced<br>
from:<br>
      void clang::ast_matchers::expectRewritten<clang::ast_matchers::internal::Matcher<clang::Stmt><br>
>(std::string const&, std::string const&,<br>
clang::ast_matchers::internal::Matcher<clang::Stmt> const&,<br>
clang::ast_matchers::RefactoringCallback&) in<br>
RefactoringCallbacksTest.o<br>
  "clang::ast_matchers::MatchFinder::~MatchFinder()", referenced from:<br>
      void clang::ast_matchers::expectRewritten<clang::ast_matchers::internal::Matcher<clang::Stmt><br>
>(std::string const&, std::string const&,<br>
clang::ast_matchers::internal::Matcher<clang::Stmt> const&,<br>
clang::ast_matchers::RefactoringCallback&) in<br>
RefactoringCallbacksTest.o<br>
  "clang::ast_matchers::MatchFinder::newASTConsumer()", referenced from:<br>
      clang::tooling::FrontendActionFactory*<br>
clang::tooling::newFrontendActionFactory<clang::ast_matchers::MatchFinder>(clang::ast_matchers::MatchFinder*)::clang::tooling::newFrontendActionFactory<clang::ast_matchers::MatchFinder>::FrontendActionFactoryAdapter::ConsumerFactoryAdaptor::CreateASTConsumer(clang::CompilerInstance&,<br>

llvm::StringRef) in RefactoringCallbacksTest.o<br>
  "clang::ast_matchers::internal::BoundNodesTreeBuilder::setBinding(std::string<br>
const&, clang::Stmt const*)", referenced from:<br>
      clang::ast_matchers::internal::IdMatcher<clang::Stmt>::matches(clang::Stmt<br>
const&, clang::ast_matchers::internal::ASTMatchFinder*,<br>
clang::ast_matchers::internal::BoundNodesTreeBuilder*) const in<br>
RefactoringCallbacksTest.o<br>
ld: symbol(s) not found for architecture x86_64<br>
<div class="HOEnZb"><div class="h5"><br>
On Tue, Jul 17, 2012 at 12:37 PM, Daniel Jasper <<a href="mailto:djasper@google.com">djasper@google.com</a>> wrote:<br>
> Author: djasper<br>
> Date: Tue Jul 17 03:37:03 2012<br>
> New Revision: 160355<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=160355&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=160355&view=rev</a><br>
> Log:<br>
> Finishing the move of RefactoringCallbacks and fixing the corresponding<br>
> buildbot failures.<br>
><br>
> Modified:<br>
>     cfe/trunk/include/clang/Tooling/RefactoringCallbacks.h<br>
>     cfe/trunk/lib/Tooling/RefactoringCallbacks.cpp<br>
>     cfe/trunk/unittests/Tooling/RefactoringCallbacksTest.cpp<br>
><br>
> Modified: cfe/trunk/include/clang/Tooling/RefactoringCallbacks.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Tooling/RefactoringCallbacks.h?rev=160355&r1=160354&r2=160355&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Tooling/RefactoringCallbacks.h?rev=160355&r1=160354&r2=160355&view=diff</a><br>

> ==============================================================================<br>
> --- cfe/trunk/include/clang/Tooling/RefactoringCallbacks.h (original)<br>
> +++ cfe/trunk/include/clang/Tooling/RefactoringCallbacks.h Tue Jul 17 03:37:03 2012<br>
> @@ -33,18 +33,18 @@<br>
>  #include "clang/Tooling/Refactoring.h"<br>
><br>
>  namespace clang {<br>
> -namespace ast_matchers {<br>
> +namespace tooling {<br>
><br>
>  /// \brief Base class for RefactoringCallbacks.<br>
>  ///<br>
>  /// Collects \c tooling::Replacements while running.<br>
> -class RefactoringCallback : public MatchFinder::MatchCallback {<br>
> +class RefactoringCallback : public ast_matchers::MatchFinder::MatchCallback {<br>
>  public:<br>
>    RefactoringCallback();<br>
> -  tooling::Replacements &getReplacements();<br>
> +  Replacements &getReplacements();<br>
><br>
>  protected:<br>
> -  tooling::Replacements Replace;<br>
> +  Replacements Replace;<br>
>  };<br>
><br>
>  /// \brief Replace the text of the statement bound to \c FromId with the text in<br>
> @@ -52,7 +52,7 @@<br>
>  class ReplaceStmtWithText : public RefactoringCallback {<br>
>  public:<br>
>    ReplaceStmtWithText(StringRef FromId, StringRef ToText);<br>
> -  virtual void run(const MatchFinder::MatchResult &Result);<br>
> +  virtual void run(const ast_matchers::MatchFinder::MatchResult &Result);<br>
><br>
>  private:<br>
>    std::string FromId;<br>
> @@ -64,7 +64,7 @@<br>
>  class ReplaceStmtWithStmt : public RefactoringCallback {<br>
>  public:<br>
>    ReplaceStmtWithStmt(StringRef FromId, StringRef ToId);<br>
> -  virtual void run(const MatchFinder::MatchResult &Result);<br>
> +  virtual void run(const ast_matchers::MatchFinder::MatchResult &Result);<br>
><br>
>  private:<br>
>    std::string FromId;<br>
> @@ -77,14 +77,14 @@<br>
>  class ReplaceIfStmtWithItsBody : public RefactoringCallback {<br>
>  public:<br>
>    ReplaceIfStmtWithItsBody(StringRef Id, bool PickTrueBranch);<br>
> -  virtual void run(const MatchFinder::MatchResult &Result);<br>
> +  virtual void run(const ast_matchers::MatchFinder::MatchResult &Result);<br>
><br>
>  private:<br>
>    std::string Id;<br>
>    const bool PickTrueBranch;<br>
>  };<br>
><br>
> -} // end namespace ast_matchers<br>
> +} // end namespace tooling<br>
>  } // end namespace clang<br>
><br>
>  #endif // LLVM_CLANG_TOOLING_REFACTORING_CALLBACKS_H<br>
><br>
> Modified: cfe/trunk/lib/Tooling/RefactoringCallbacks.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Tooling/RefactoringCallbacks.cpp?rev=160355&r1=160354&r2=160355&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Tooling/RefactoringCallbacks.cpp?rev=160355&r1=160354&r2=160355&view=diff</a><br>

> ==============================================================================<br>
> --- cfe/trunk/lib/Tooling/RefactoringCallbacks.cpp (original)<br>
> +++ cfe/trunk/lib/Tooling/RefactoringCallbacks.cpp Tue Jul 17 03:37:03 2012<br>
> @@ -13,22 +13,22 @@<br>
>  #include "clang/Tooling/RefactoringCallbacks.h"<br>
><br>
>  namespace clang {<br>
> -namespace ast_matchers {<br>
> +namespace tooling {<br>
><br>
>  RefactoringCallback::RefactoringCallback() {}<br>
>  tooling::Replacements &RefactoringCallback::getReplacements() {<br>
>    return Replace;<br>
>  }<br>
><br>
> -static tooling::Replacement replaceStmtWithText(SourceManager &Sources,<br>
> -                                                const Stmt &From,<br>
> -                                                StringRef Text) {<br>
> +static Replacement replaceStmtWithText(SourceManager &Sources,<br>
> +                                       const Stmt &From,<br>
> +                                       StringRef Text) {<br>
>    return tooling::Replacement(Sources, CharSourceRange::getTokenRange(<br>
>        From.getSourceRange()), Text);<br>
>  }<br>
> -static tooling::Replacement replaceStmtWithStmt(SourceManager &Sources,<br>
> -                                                const Stmt &From,<br>
> -                                                const Stmt &To) {<br>
> +static Replacement replaceStmtWithStmt(SourceManager &Sources,<br>
> +                                       const Stmt &From,<br>
> +                                       const Stmt &To) {<br>
>    return replaceStmtWithText(Sources, From, Lexer::getSourceText(<br>
>        CharSourceRange::getTokenRange(To.getSourceRange()),<br>
>        Sources, LangOptions()));<br>
> @@ -37,7 +37,8 @@<br>
>  ReplaceStmtWithText::ReplaceStmtWithText(StringRef FromId, StringRef ToText)<br>
>      : FromId(FromId), ToText(ToText) {}<br>
><br>
> -void ReplaceStmtWithText::run(const MatchFinder::MatchResult &Result) {<br>
> +void ReplaceStmtWithText::run(<br>
> +    const ast_matchers::MatchFinder::MatchResult &Result) {<br>
>    if (const Stmt *FromMatch = Result.Nodes.getStmtAs<Stmt>(FromId)) {<br>
>      Replace.insert(tooling::Replacement(<br>
>          *Result.SourceManager,<br>
> @@ -49,7 +50,8 @@<br>
>  ReplaceStmtWithStmt::ReplaceStmtWithStmt(StringRef FromId, StringRef ToId)<br>
>      : FromId(FromId), ToId(ToId) {}<br>
><br>
> -void ReplaceStmtWithStmt::run(const MatchFinder::MatchResult &Result) {<br>
> +void ReplaceStmtWithStmt::run(<br>
> +    const ast_matchers::MatchFinder::MatchResult &Result) {<br>
>    const Stmt *FromMatch = Result.Nodes.getStmtAs<Stmt>(FromId);<br>
>    const Stmt *ToMatch = Result.Nodes.getStmtAs<Stmt>(ToId);<br>
>    if (FromMatch && ToMatch)<br>
> @@ -61,7 +63,8 @@<br>
>                                                     bool PickTrueBranch)<br>
>      : Id(Id), PickTrueBranch(PickTrueBranch) {}<br>
><br>
> -void ReplaceIfStmtWithItsBody::run(const MatchFinder::MatchResult &Result) {<br>
> +void ReplaceIfStmtWithItsBody::run(<br>
> +    const ast_matchers::MatchFinder::MatchResult &Result) {<br>
>    if (const IfStmt *Node = Result.Nodes.getStmtAs<IfStmt>(Id)) {<br>
>      const Stmt *Body = PickTrueBranch ? Node->getThen() : Node->getElse();<br>
>      if (Body) {<br>
> @@ -74,5 +77,5 @@<br>
>    }<br>
>  }<br>
><br>
> -} // end namespace ast_matchers<br>
> +} // end namespace tooling<br>
>  } // end namespace clang<br>
><br>
> Modified: cfe/trunk/unittests/Tooling/RefactoringCallbacksTest.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Tooling/RefactoringCallbacksTest.cpp?rev=160355&r1=160354&r2=160355&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Tooling/RefactoringCallbacksTest.cpp?rev=160355&r1=160354&r2=160355&view=diff</a><br>

> ==============================================================================<br>
> --- cfe/trunk/unittests/Tooling/RefactoringCallbacksTest.cpp (original)<br>
> +++ cfe/trunk/unittests/Tooling/RefactoringCallbacksTest.cpp Tue Jul 17 03:37:03 2012<br>
> @@ -14,7 +14,9 @@<br>
>  #include "RewriterTestContext.h"<br>
><br>
>  namespace clang {<br>
> -namespace ast_matchers {<br>
> +namespace tooling {<br>
> +<br>
> +using namespace ast_matchers;<br>
><br>
>  template <typename T><br>
>  void expectRewritten(const std::string &Code,<br>
><br>
><br>
> _______________________________________________<br>
> cfe-commits mailing list<br>
> <a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
<br>
<br>
<br>
</div></div><span class="HOEnZb"><font color="#888888">--<br>
Alexander Potapenko<br>
Software Engineer<br>
Google Moscow<br>
</font></span></blockquote></div><br></div>