Skip to content

Commit df42f99

Browse files
committed
[clang-tidy] Simplify suspicious enum usage check
Differential Revision: https://reviews.llvm.org/D97149
1 parent 35763ba commit df42f99

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

clang-tools-extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -118,30 +118,28 @@ void SuspiciousEnumUsageCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
118118

119119
void SuspiciousEnumUsageCheck::registerMatchers(MatchFinder *Finder) {
120120
const auto EnumExpr = [](StringRef RefName, StringRef DeclName) {
121-
return expr(ignoringImpCasts(expr().bind(RefName)),
122-
ignoringImpCasts(hasType(enumDecl().bind(DeclName))));
121+
return expr(hasType(enumDecl().bind(DeclName))).bind(RefName);
123122
};
124123

125124
Finder->addMatcher(
126-
binaryOperator(hasOperatorName("|"), hasLHS(EnumExpr("", "enumDecl")),
127-
hasRHS(expr(EnumExpr("", "otherEnumDecl"),
128-
ignoringImpCasts(hasType(enumDecl(
129-
unless(equalsBoundNode("enumDecl"))))))))
125+
binaryOperator(
126+
hasOperatorName("|"), hasLHS(hasType(enumDecl().bind("enumDecl"))),
127+
hasRHS(hasType(enumDecl(unless(equalsBoundNode("enumDecl")))
128+
.bind("otherEnumDecl"))))
130129
.bind("diffEnumOp"),
131130
this);
132131

133132
Finder->addMatcher(
134133
binaryOperator(hasAnyOperatorName("+", "|"),
135134
hasLHS(EnumExpr("lhsExpr", "enumDecl")),
136-
hasRHS(expr(EnumExpr("rhsExpr", ""),
137-
ignoringImpCasts(hasType(
138-
enumDecl(equalsBoundNode("enumDecl"))))))),
135+
hasRHS(expr(hasType(enumDecl(equalsBoundNode("enumDecl"))))
136+
.bind("rhsExpr"))),
139137
this);
140138

141139
Finder->addMatcher(
142140
binaryOperator(
143141
hasAnyOperatorName("+", "|"),
144-
hasOperands(expr(hasType(isInteger()), unless(EnumExpr("", ""))),
142+
hasOperands(expr(hasType(isInteger()), unless(hasType(enumDecl()))),
145143
EnumExpr("enumExpr", "enumDecl"))),
146144
this);
147145

clang-tools-extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ class SuspiciousEnumUsageCheck : public ClangTidyCheck {
2525
void registerMatchers(ast_matchers::MatchFinder *Finder) override;
2626
void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
2727
void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
28+
llvm::Optional<TraversalKind> getCheckTraversalKind() const override {
29+
return TK_IgnoreUnlessSpelledInSource;
30+
}
2831

2932
private:
3033
void checkSuspiciousBitmaskUsage(const Expr*, const EnumDecl*);

0 commit comments

Comments
 (0)