[PATCH] D64861: [clang-tidy] Adjust location of namespace comment diagnostic
Ilya Biryukov via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 17 06:05:41 PDT 2019
ilya-biryukov created this revision.
ilya-biryukov added reviewers: alexfh, hokein.
Herald added subscribers: kadircet, xazax.hun.
Herald added a project: clang.
If there is no comment, place it at the closing brace of a namespace
definition. Previously it was placed at the next character after the
closing brace.
The new position produces a better location for highlighting in clangd
and does not seem to make matters worse for clang-tidy.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D64861
Files:
clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp
clang-tools-extra/test/clang-tidy/google-readability-namespace-comments.cpp
clang-tools-extra/test/clang-tidy/google-readability-nested-namespace-comments.cpp
clang-tools-extra/test/clang-tidy/select-checks.cpp
Index: clang-tools-extra/test/clang-tidy/select-checks.cpp
===================================================================
--- clang-tools-extra/test/clang-tidy/select-checks.cpp
+++ clang-tools-extra/test/clang-tidy/select-checks.cpp
@@ -5,7 +5,7 @@
namespace i {
}
-// CHECK: :[[@LINE-1]]:2: warning: namespace 'i' not terminated with a closing comment [llvm-namespace-comment]
+// CHECK: :[[@LINE-1]]:1: 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); };
Index: clang-tools-extra/test/clang-tidy/google-readability-nested-namespace-comments.cpp
===================================================================
--- clang-tools-extra/test/clang-tidy/google-readability-nested-namespace-comments.cpp
+++ clang-tools-extra/test/clang-tidy/google-readability-nested-namespace-comments.cpp
@@ -7,9 +7,9 @@
void f();
-// CHECK-MESSAGES: :[[@LINE+4]]:2: warning: namespace 'n3' not terminated with
+// CHECK-MESSAGES: :[[@LINE+4]]:1: warning: namespace 'n3' not terminated with
// CHECK-MESSAGES: :[[@LINE-7]]:11: note: namespace 'n3' starts here
-// CHECK-MESSAGES: :[[@LINE+2]]:3: warning: namespace 'n1::n2' not terminated with a closing comment [google-readability-namespace-comments]
+// CHECK-MESSAGES: :[[@LINE+2]]:2: warning: namespace 'n1::n2' not terminated with a closing comment [google-readability-namespace-comments]
// CHECK-MESSAGES: :[[@LINE-10]]:11: note: namespace 'n1::n2' starts here
}}
// CHECK-FIXES: } // namespace n3
Index: clang-tools-extra/test/clang-tidy/google-readability-namespace-comments.cpp
===================================================================
--- clang-tools-extra/test/clang-tidy/google-readability-namespace-comments.cpp
+++ clang-tools-extra/test/clang-tidy/google-readability-namespace-comments.cpp
@@ -7,9 +7,9 @@
void f(); // So that the namespace isn't empty.
-// CHECK-MESSAGES: :[[@LINE+4]]:2: warning: namespace 'n2' not terminated with a closing comment [google-readability-namespace-comments]
+// CHECK-MESSAGES: :[[@LINE+4]]:1: warning: namespace 'n2' not terminated with a closing comment [google-readability-namespace-comments]
// CHECK-MESSAGES: :[[@LINE-7]]:11: note: namespace 'n2' starts here
-// CHECK-MESSAGES: :[[@LINE+2]]:3: warning: namespace 'n1' not terminated with
+// CHECK-MESSAGES: :[[@LINE+2]]:2: warning: namespace 'n1' not terminated with
// CHECK-MESSAGES: :[[@LINE-10]]:11: note: namespace 'n1' starts here
}}
// CHECK-FIXES: } // namespace n2
@@ -25,7 +25,7 @@
// 5
// 6
// 7
-// CHECK-MESSAGES: :[[@LINE+2]]:2: warning: namespace 'macro_expansion' not terminated with
+// CHECK-MESSAGES: :[[@LINE+2]]:1: warning: namespace 'macro_expansion' not terminated with
// CHECK-MESSAGES: :[[@LINE-10]]:11: note: namespace 'macro_expansion' starts here
}
// CHECK-FIXES: } // namespace macro_expansion
Index: clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp
===================================================================
--- clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp
+++ clang-tools-extra/clang-tidy/readability/NamespaceCommentCheck.cpp
@@ -9,6 +9,7 @@
#include "NamespaceCommentCheck.h"
#include "clang/AST/ASTContext.h"
#include "clang/ASTMatchers/ASTMatchers.h"
+#include "clang/Basic/SourceLocation.h"
#include "clang/Lex/Lexer.h"
#include "llvm/ADT/StringExtras.h"
@@ -181,7 +182,13 @@
? "anonymous namespace"
: ("namespace '" + NestedNamespaceName.str() + "'");
- diag(AfterRBrace, Message)
+ // Place diagnostic at an old comment, or closing brace if we did not have it.
+ SourceLocation DiagLoc =
+ OldCommentRange.getBegin() != OldCommentRange.getEnd()
+ ? OldCommentRange.getBegin()
+ : ND->getRBraceLoc();
+
+ diag(DiagLoc, Message)
<< NamespaceName
<< FixItHint::CreateReplacement(
CharSourceRange::getCharRange(OldCommentRange),
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D64861.210300.patch
Type: text/x-patch
Size: 4016 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190717/a92e902e/attachment-0001.bin>
More information about the cfe-commits
mailing list