[clang-tools-extra] r294578 - [clang-tidy] Fix misc-unused-using-decls false positives in presence of compile errors

Alexander Kornienko via cfe-commits cfe-commits at lists.llvm.org
Thu Feb 9 02:41:27 PST 2017


Author: alexfh
Date: Thu Feb  9 04:41:27 2017
New Revision: 294578

URL: http://llvm.org/viewvc/llvm-project?rev=294578&view=rev
Log:
[clang-tidy] Fix misc-unused-using-decls false positives in presence of compile errors

Added:
    clang-tools-extra/trunk/test/clang-tidy/misc-unused-using-decls-errors.cpp
Modified:
    clang-tools-extra/trunk/clang-tidy/misc/UnusedUsingDeclsCheck.cpp

Modified: clang-tools-extra/trunk/clang-tidy/misc/UnusedUsingDeclsCheck.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/UnusedUsingDeclsCheck.cpp?rev=294578&r1=294577&r2=294578&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/misc/UnusedUsingDeclsCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/misc/UnusedUsingDeclsCheck.cpp Thu Feb  9 04:41:27 2017
@@ -48,6 +48,9 @@ void UnusedUsingDeclsCheck::registerMatc
 }
 
 void UnusedUsingDeclsCheck::check(const MatchFinder::MatchResult &Result) {
+  if (Result.Context->getDiagnostics().hasUncompilableErrorOccurred())
+    return;
+
   if (const auto *Using = Result.Nodes.getNodeAs<UsingDecl>("using")) {
     // Ignores using-declarations defined in macros.
     if (Using->getLocation().isMacroID())

Added: clang-tools-extra/trunk/test/clang-tidy/misc-unused-using-decls-errors.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/misc-unused-using-decls-errors.cpp?rev=294578&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/misc-unused-using-decls-errors.cpp (added)
+++ clang-tools-extra/trunk/test/clang-tidy/misc-unused-using-decls-errors.cpp Thu Feb  9 04:41:27 2017
@@ -0,0 +1,12 @@
+// RUN: %check_clang_tidy %s misc-unused-using-decls %t
+
+namespace n {
+class C;
+}
+
+using n::C;
+
+void f() {
+  for (C *p : unknown()) {}
+  // CHECK-MESSAGES: :[[@LINE-1]]:15: error: use of undeclared identifier 'unknown' [clang-diagnostic-error]
+}




More information about the cfe-commits mailing list