[clang-tools-extra] r217951 - [clang-tidy] Don't emit the same fixit multiple times.

Benjamin Kramer benny.kra at googlemail.com
Wed Sep 17 04:48:34 PDT 2014


Author: d0k
Date: Wed Sep 17 06:48:34 2014
New Revision: 217951

URL: http://llvm.org/viewvc/llvm-project?rev=217951&view=rev
Log:
[clang-tidy] Don't emit the same fixit multiple times.

If we had many header files we would attach the fix-it for all files to all
warnings, oops. This is harmless 99.9% of the time but can confuse the rewriter
in some edge cases. Sadly I failed to create a small test case for this.

While there move fix-its instead of copying.

Modified:
    clang-tools-extra/trunk/clang-tidy/utils/HeaderGuard.cpp

Modified: clang-tools-extra/trunk/clang-tidy/utils/HeaderGuard.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/utils/HeaderGuard.cpp?rev=217951&r1=217950&r2=217951&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/utils/HeaderGuard.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/utils/HeaderGuard.cpp Wed Sep 17 06:48:34 2014
@@ -125,15 +125,16 @@ public:
         if (CurHeaderGuard != NewGuard) {
           auto D = Check->diag(Ifndef,
                                "header guard does not follow preferred style");
-          for (const FixItHint Fix : FixIts)
-            D.AddFixItHint(Fix);
+          for (FixItHint &Fix : FixIts)
+            D.AddFixItHint(std::move(Fix));
         } else {
           auto D = Check->diag(EndIf, "#endif for a header guard should "
                                       "reference the guard macro in a comment");
-          for (const FixItHint Fix : FixIts)
-            D.AddFixItHint(Fix);
+          for (FixItHint &Fix : FixIts)
+            D.AddFixItHint(std::move(Fix));
         }
       }
+      FixIts.clear();
     }
 
     // Emit warnings for headers that are missing guards.
@@ -144,7 +145,6 @@ public:
     Files.clear();
     Ifndefs.clear();
     EndIfs.clear();
-    FixIts.clear();
   }
 
   bool wouldFixEndifComment(StringRef FileName, SourceLocation EndIf,





More information about the cfe-commits mailing list