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

Alexander Kornienko alexfh at google.com
Wed Sep 17 05:29:25 PDT 2014


On Wed, Sep 17, 2014 at 1:48 PM, Benjamin Kramer <benny.kra at googlemail.com>
wrote:

> 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();
>

>From how it is used, FixIts could also be a local variable.


>      }
>
>      // 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,
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140917/46108ee9/attachment.html>


More information about the cfe-commits mailing list