[clang-tools-extra] r351348 - [clang-tidy] Move the macro helper function to a common location; NFC
Hyrum Wright via cfe-commits
cfe-commits at lists.llvm.org
Wed Jan 16 06:49:32 PST 2019
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;
More information about the cfe-commits
mailing list