forked from OSchip/llvm-project
[clang-tidy] Fix more enum declaration cases in misc-unused-using-decls check.
Summary: Fix PR28350. Reviewers: alexfh Subscribers: aaron.ballman, Eugene.Zelenko, cfe-commits Differential Revision: http://reviews.llvm.org/D21833 llvm-svn: 274496
This commit is contained in:
parent
c97b9bda76
commit
c1926075c3
|
@ -31,6 +31,7 @@ static bool ShouldCheckDecl(const Decl *TargetDecl) {
|
|||
void UnusedUsingDeclsCheck::registerMatchers(MatchFinder *Finder) {
|
||||
Finder->addMatcher(usingDecl(isExpansionInMainFile()).bind("using"), this);
|
||||
auto DeclMatcher = hasDeclaration(namedDecl().bind("used"));
|
||||
Finder->addMatcher(loc(enumType(DeclMatcher)), this);
|
||||
Finder->addMatcher(loc(recordType(DeclMatcher)), this);
|
||||
Finder->addMatcher(loc(templateSpecializationType(DeclMatcher)), this);
|
||||
Finder->addMatcher(declRefExpr().bind("used"), this);
|
||||
|
@ -94,6 +95,8 @@ void UnusedUsingDeclsCheck::check(const MatchFinder::MatchResult &Result) {
|
|||
removeFromFoundDecls(VD);
|
||||
} else if (const auto *ECD = dyn_cast<EnumConstantDecl>(DRE->getDecl())) {
|
||||
removeFromFoundDecls(ECD);
|
||||
if (const auto *ET = ECD->getType()->getAs<EnumType>())
|
||||
removeFromFoundDecls(ET->getDecl());
|
||||
}
|
||||
}
|
||||
// Check the uninstantiated template function usage.
|
||||
|
|
|
@ -44,11 +44,13 @@ public:
|
|||
extern ostream cout;
|
||||
ostream &endl(ostream &os);
|
||||
|
||||
enum Color {
|
||||
Green,
|
||||
Red,
|
||||
Yellow
|
||||
};
|
||||
enum Color1 { Green };
|
||||
|
||||
enum Color2 { Red };
|
||||
|
||||
enum Color3 { Yellow };
|
||||
|
||||
enum Color4 { Blue };
|
||||
|
||||
} // namespace n
|
||||
|
||||
|
@ -126,11 +128,13 @@ void IgnoreFunctionScope() {
|
|||
using n::H;
|
||||
}
|
||||
|
||||
using n::Color;
|
||||
// CHECK-MESSAGES: :[[@LINE-1]]:10: warning: using decl 'Color' is unused
|
||||
using n::Color1;
|
||||
// CHECK-MESSAGES: :[[@LINE-1]]:10: warning: using decl 'Color1' is unused
|
||||
using n::Green;
|
||||
// CHECK-MESSAGES: :[[@LINE-1]]:10: warning: using decl 'Green' is unused
|
||||
using n::Red;
|
||||
using n::Color2;
|
||||
using n::Color3;
|
||||
using n::Blue;
|
||||
|
||||
// ----- Usages -----
|
||||
void f(B b);
|
||||
|
@ -144,5 +148,7 @@ void g() {
|
|||
UsedFunc();
|
||||
UsedTemplateFunc<int>();
|
||||
cout << endl;
|
||||
int t = Red;
|
||||
Color2 color2;
|
||||
int t1 = Color3::Yellow;
|
||||
int t2 = Blue;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue