[clang-tools-extra] r349758 - [clang-tidy] Use translationUnitDecl() instead of a custom matcher.

Alexander Kornienko via cfe-commits cfe-commits at lists.llvm.org
Thu Dec 20 05:50:04 PST 2018


Author: alexfh
Date: Thu Dec 20 05:50:04 2018
New Revision: 349758

URL: http://llvm.org/viewvc/llvm-project?rev=349758&view=rev
Log:
[clang-tidy] Use translationUnitDecl() instead of a custom matcher.

Modified:
    clang-tools-extra/trunk/clang-tidy/readability/SimplifyBooleanExprCheck.cpp
    clang-tools-extra/trunk/clang-tidy/readability/SimplifyBooleanExprCheck.h

Modified: clang-tools-extra/trunk/clang-tidy/readability/SimplifyBooleanExprCheck.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/readability/SimplifyBooleanExprCheck.cpp?rev=349758&r1=349757&r2=349758&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/readability/SimplifyBooleanExprCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/readability/SimplifyBooleanExprCheck.cpp Thu Dec 20 05:50:04 2018
@@ -319,8 +319,6 @@ bool containsDiscardedTokens(const Match
 } // namespace
 
 class SimplifyBooleanExprCheck::Visitor : public RecursiveASTVisitor<Visitor> {
-  using Base = RecursiveASTVisitor<Visitor>;
-
  public:
   Visitor(SimplifyBooleanExprCheck *Check,
           const MatchFinder::MatchResult &Result)
@@ -507,16 +505,8 @@ void SimplifyBooleanExprCheck::storeOpti
                 ChainedConditionalAssignment);
 }
 
-// This is a silly hack to let us run a RecursiveASTVisitor on the Context.
-// We want to match exactly one node in the AST, doesn't matter which.
-AST_MATCHER_P(Decl, matchOnce, bool *, Matched) {
-  if (*Matched)
-    return false;
-  return *Matched = true;
-}
-
 void SimplifyBooleanExprCheck::registerMatchers(MatchFinder *Finder) {
-  Finder->addMatcher(matchOnce(&MatchedOnce), this);
+  Finder->addMatcher(translationUnitDecl().bind("top"), this);
 
   matchBoolCondition(Finder, true, ConditionThenStmtId);
   matchBoolCondition(Finder, false, ConditionElseStmtId);
@@ -535,8 +525,10 @@ void SimplifyBooleanExprCheck::registerM
 }
 
 void SimplifyBooleanExprCheck::check(const MatchFinder::MatchResult &Result) {
-  if (const CXXBoolLiteralExpr *TrueConditionRemoved =
-          getBoolLiteral(Result, ConditionThenStmtId))
+  if (const auto *TU = Result.Nodes.getNodeAs<TranslationUnitDecl>("top"))
+    Visitor(this, Result).TraverseAST(*Result.Context);
+  else if (const CXXBoolLiteralExpr *TrueConditionRemoved =
+               getBoolLiteral(Result, ConditionThenStmtId))
     replaceWithThenStatement(Result, TrueConditionRemoved);
   else if (const CXXBoolLiteralExpr *FalseConditionRemoved =
                getBoolLiteral(Result, ConditionElseStmtId))
@@ -564,10 +556,6 @@ void SimplifyBooleanExprCheck::check(con
   else if (const auto *Compound =
                Result.Nodes.getNodeAs<CompoundStmt>(CompoundNotBoolId))
     replaceCompoundReturnWithCondition(Result, Compound, true);
-  else { // MatchOnce matcher
-    assert(MatchedOnce);
-    Visitor(this, Result).TraverseAST(*Result.Context);
-  }
 }
 
 void SimplifyBooleanExprCheck::issueDiag(

Modified: clang-tools-extra/trunk/clang-tidy/readability/SimplifyBooleanExprCheck.h
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/readability/SimplifyBooleanExprCheck.h?rev=349758&r1=349757&r2=349758&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/readability/SimplifyBooleanExprCheck.h (original)
+++ clang-tools-extra/trunk/clang-tidy/readability/SimplifyBooleanExprCheck.h Thu Dec 20 05:50:04 2018
@@ -79,7 +79,6 @@ private:
                  SourceLocation Loc, StringRef Description,
                  SourceRange ReplacementRange, StringRef Replacement);
 
-  bool MatchedOnce = false;
   const bool ChainedConditionalReturn;
   const bool ChainedConditionalAssignment;
 };




More information about the cfe-commits mailing list