From a204c0ad180b27281985a9fd38b39f328cd1683b Mon Sep 17 00:00:00 2001 From: Daniel Jasper Date: Wed, 20 Apr 2016 08:58:27 +0000 Subject: [PATCH] clang-tidy: [misc-unused-using-decls] Always use the canonical decl to identify things. This fixes llvm.org/PR27430. llvm-svn: 266864 --- clang-tools-extra/clang-tidy/misc/UnusedUsingDeclsCheck.cpp | 8 +++++--- clang-tools-extra/clang-tidy/misc/UnusedUsingDeclsCheck.h | 4 ++-- clang-tools-extra/test/clang-tidy/misc-unused-using-decls.cpp | 1 + 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/clang-tools-extra/clang-tidy/misc/UnusedUsingDeclsCheck.cpp b/clang-tools-extra/clang-tidy/misc/UnusedUsingDeclsCheck.cpp index 5d93357..b2aff4d 100644 --- a/clang-tools-extra/clang-tidy/misc/UnusedUsingDeclsCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/UnusedUsingDeclsCheck.cpp @@ -30,7 +30,8 @@ void UnusedUsingDeclsCheck::check(const MatchFinder::MatchResult &Result) { // than one shadow. if (Using->shadow_size() != 1) return; - const auto* TargetDecl = Using->shadow_begin()->getTargetDecl(); + const auto *TargetDecl = + Using->shadow_begin()->getTargetDecl()->getCanonicalDecl(); // FIXME: Handle other target types. if (!isa(TargetDecl)) @@ -52,8 +53,9 @@ void UnusedUsingDeclsCheck::check(const MatchFinder::MatchResult &Result) { // FIXME: This currently doesn't look at whether the type reference is // actually found with the help of the using declaration. if (const auto *Used = Result.Nodes.getNodeAs("used")) { - if (FoundDecls.find(Used) != FoundDecls.end()) - FoundDecls[Used] = nullptr; + auto I = FoundDecls.find(Used->getCanonicalDecl()); + if (I != FoundDecls.end()) + I->second = nullptr; } } diff --git a/clang-tools-extra/clang-tidy/misc/UnusedUsingDeclsCheck.h b/clang-tools-extra/clang-tidy/misc/UnusedUsingDeclsCheck.h index 9c899e8..dc8fb88 100644 --- a/clang-tools-extra/clang-tidy/misc/UnusedUsingDeclsCheck.h +++ b/clang-tools-extra/clang-tidy/misc/UnusedUsingDeclsCheck.h @@ -30,8 +30,8 @@ public: void onEndOfTranslationUnit() override; private: - llvm::DenseMap FoundDecls; - llvm::DenseMap FoundRanges; + llvm::DenseMap FoundDecls; + llvm::DenseMap FoundRanges; }; } // namespace misc diff --git a/clang-tools-extra/test/clang-tidy/misc-unused-using-decls.cpp b/clang-tools-extra/test/clang-tidy/misc-unused-using-decls.cpp index 110c1b4..053e65d 100644 --- a/clang-tools-extra/test/clang-tidy/misc-unused-using-decls.cpp +++ b/clang-tools-extra/test/clang-tidy/misc-unused-using-decls.cpp @@ -6,6 +6,7 @@ namespace n { class A; class B; class C; +class D; class D { public: static int i; }; } -- 2.7.4