Author: hwright Date: Wed Jan 16 06:49:32 2019 New Revision: 351348 URL: http://llvm.org/viewvc/llvm-project?rev=351348&view=rev Log: [clang-tidy] Move the macro helper function to a common location; NFC
This is useful for multiple checks. Modified: clang-tools-extra/trunk/clang-tidy/abseil/DurationComparisonCheck.cpp clang-tools-extra/trunk/clang-tidy/abseil/DurationRewriter.cpp clang-tools-extra/trunk/clang-tidy/abseil/DurationRewriter.h Modified: clang-tools-extra/trunk/clang-tidy/abseil/DurationComparisonCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/abseil/DurationComparisonCheck.cpp?rev=351348&r1=351347&r2=351348&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/abseil/DurationComparisonCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/abseil/DurationComparisonCheck.cpp Wed Jan 16 06:49:32 2019 @@ -19,26 +19,6 @@ namespace clang { namespace tidy { namespace abseil { -/// Return `true` if `E` is a either: not a macro at all; or an argument to -/// one. In the latter case, we should still transform it. -static bool IsValidMacro(const MatchFinder::MatchResult &Result, - const Expr *E) { - if (!E->getBeginLoc().isMacroID()) - return true; - - SourceLocation Loc = E->getBeginLoc(); - // We want to get closer towards the initial macro typed into the source only - // if the location is being expanded as a macro argument. - while (Result.SourceManager->isMacroArgExpansion(Loc)) { - // We are calling getImmediateMacroCallerLoc, but note it is essentially - // equivalent to calling getImmediateSpellingLoc in this context according - // to Clang implementation. We are not calling getImmediateSpellingLoc - // because Clang comment says it "should not generally be used by clients." - Loc = Result.SourceManager->getImmediateMacroCallerLoc(Loc); - } - return !Loc.isMacroID(); -} - void DurationComparisonCheck::registerMatchers(MatchFinder *Finder) { auto Matcher = binaryOperator(anyOf(hasOperatorName(">"), hasOperatorName(">="), @@ -64,8 +44,8 @@ void DurationComparisonCheck::check(cons // want to handle the case of rewriting both sides. This is much simpler if // we unconditionally try and rewrite both, and let the rewriter determine // if nothing needs to be done. - if (!IsValidMacro(Result, Binop->getLHS()) || - !IsValidMacro(Result, Binop->getRHS())) + if (!isNotInMacro(Result, Binop->getLHS()) || + !isNotInMacro(Result, Binop->getRHS())) return; std::string LhsReplacement = rewriteExprFromNumberToDuration(Result, *Scale, Binop->getLHS()); Modified: clang-tools-extra/trunk/clang-tidy/abseil/DurationRewriter.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/abseil/DurationRewriter.cpp?rev=351348&r1=351347&r2=351348&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/abseil/DurationRewriter.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/abseil/DurationRewriter.cpp Wed Jan 16 06:49:32 2019 @@ -216,6 +216,23 @@ std::string rewriteExprFromNumberToDurat .str(); } +bool isNotInMacro(const MatchFinder::MatchResult &Result, const Expr *E) { + if (!E->getBeginLoc().isMacroID()) + return true; + + SourceLocation Loc = E->getBeginLoc(); + // We want to get closer towards the initial macro typed into the source only + // if the location is being expanded as a macro argument. + while (Result.SourceManager->isMacroArgExpansion(Loc)) { + // We are calling getImmediateMacroCallerLoc, but note it is essentially + // equivalent to calling getImmediateSpellingLoc in this context according + // to Clang implementation. We are not calling getImmediateSpellingLoc + // because Clang comment says it "should not generally be used by clients." + Loc = Result.SourceManager->getImmediateMacroCallerLoc(Loc); + } + return !Loc.isMacroID(); +} + } // namespace abseil } // namespace tidy } // namespace clang Modified: clang-tools-extra/trunk/clang-tidy/abseil/DurationRewriter.h URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/abseil/DurationRewriter.h?rev=351348&r1=351347&r2=351348&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/abseil/DurationRewriter.h (original) +++ clang-tools-extra/trunk/clang-tidy/abseil/DurationRewriter.h Wed Jan 16 06:49:32 2019 @@ -75,6 +75,11 @@ std::string rewriteExprFromNumberToDurat const ast_matchers::MatchFinder::MatchResult &Result, DurationScale Scale, const Expr *Node); +/// Return `true` if `E` is a either: not a macro at all; or an argument to +/// one. In the both cases, we often want to do the transformation. +bool isNotInMacro(const ast_matchers::MatchFinder::MatchResult &Result, + const Expr *E); + AST_MATCHER_FUNCTION(ast_matchers::internal::Matcher<FunctionDecl>, DurationConversionFunction) { using namespace clang::ast_matchers; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits