diff options
| author | Alexander Kornienko <alexfh@google.com> | 2014-11-17 17:32:32 +0000 |
|---|---|---|
| committer | Alexander Kornienko <alexfh@google.com> | 2014-11-17 17:32:32 +0000 |
| commit | b23eb5e3f7c43c40fe7e5ede5484285becd2f14e (patch) | |
| tree | 72abbd32624e50c0d68c0ec76057beac646b5ca6 /clang-tools-extra | |
| parent | 0837f63fd2f00ab32b98ec18ba6adf6be7fa003e (diff) | |
| download | bcm5719-llvm-b23eb5e3f7c43c40fe7e5ede5484285becd2f14e.tar.gz bcm5719-llvm-b23eb5e3f7c43c40fe7e5ede5484285becd2f14e.zip | |
[clang-tidy] Move the missing namespace comment warnings to the closing brace
Summary:
The google-readability-namespace-comments/llvm-namespace-comment
warnings are quite confusing when they appear at the beginning of a long
namespace and the closing brace is not in sight.
For convenience added notes pointing to the start of the namespace.
Reviewers: klimek
Reviewed By: klimek
Subscribers: curdeius, cfe-commits
Differential Revision: http://reviews.llvm.org/D6251
llvm-svn: 222145
Diffstat (limited to 'clang-tools-extra')
4 files changed, 15 insertions, 6 deletions
diff --git a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp index b284150dc73..76856ee7aa0 100644 --- a/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp @@ -117,10 +117,18 @@ void NamespaceCommentCheck::check(const MatchFinder::MatchResult &Result) { NeedLineBreak = false; } - diag(ND->getLocation(), "namespace not terminated with a closing comment") + std::string NamespaceName = + ND->isAnonymousNamespace() + ? "anonymous namespace" + : ("namespace '" + ND->getNameAsString() + "'"); + + diag(AfterRBrace, "%0 not terminated with a closing comment") + << NamespaceName << FixItHint::CreateInsertion(AfterRBrace, std::string(SpacesBeforeComments, ' ') + getNamespaceComment(ND, NeedLineBreak)); + diag(ND->getLocation(), "%0 starts here", DiagnosticIDs::Note) + << NamespaceName; } } // namespace readability diff --git a/clang-tools-extra/test/clang-tidy/basic.cpp b/clang-tools-extra/test/clang-tidy/basic.cpp index 7af14307def..e57350289c2 100644 --- a/clang-tools-extra/test/clang-tidy/basic.cpp +++ b/clang-tools-extra/test/clang-tidy/basic.cpp @@ -2,4 +2,4 @@ namespace i { } -// CHECK: warning: namespace not terminated with a closing comment [llvm-namespace-comment] +// CHECK: warning: namespace 'i' not terminated with a closing comment [llvm-namespace-comment] diff --git a/clang-tools-extra/test/clang-tidy/google-readability-namespace-comments.cpp b/clang-tools-extra/test/clang-tidy/google-readability-namespace-comments.cpp index d92af942385..001e607bad2 100644 --- a/clang-tools-extra/test/clang-tidy/google-readability-namespace-comments.cpp +++ b/clang-tools-extra/test/clang-tidy/google-readability-namespace-comments.cpp @@ -1,11 +1,12 @@ // RUN: $(dirname %s)/check_clang_tidy.sh %s google-readability-namespace-comments %t // REQUIRES: shell -// CHECK-MESSAGES: :[[@LINE+2]]:11: warning: namespace not terminated with a closing comment [google-readability-namespace-comments] -// CHECK-MESSAGES: :[[@LINE+2]]:11: warning: namespace not terminated with a closing comment [google-readability-namespace-comments] namespace n1 { namespace n2 { - +// CHECK-MESSAGES: :[[@LINE+4]]:2: warning: namespace 'n2' not terminated with a closing comment [google-readability-namespace-comments] +// CHECK-MESSAGES: :[[@LINE-2]]:11: note: namespace 'n2' starts here +// CHECK-MESSAGES: :[[@LINE+3]]:2: warning: namespace 'n1' not terminated with +// CHECK-MESSAGES: :[[@LINE-5]]:11: note: namespace 'n1' starts here } } // CHECK-FIXES: } // namespace n2 diff --git a/clang-tools-extra/test/clang-tidy/select-checks.cpp b/clang-tools-extra/test/clang-tidy/select-checks.cpp index f2c2876127e..12d05b4a729 100644 --- a/clang-tools-extra/test/clang-tidy/select-checks.cpp +++ b/clang-tools-extra/test/clang-tidy/select-checks.cpp @@ -5,7 +5,7 @@ namespace i { } -// CHECK: :[[@LINE-2]]:11: warning: namespace not terminated with a closing comment [llvm-namespace-comment] +// CHECK: :[[@LINE-1]]:2: warning: namespace 'i' not terminated with a closing comment [llvm-namespace-comment] // Expect no warnings from the google-explicit-constructor check: class A { A(int i); }; |

