[clangd] Do not show namespace comments.
Summary: Comments from namespaces that clangd produces are too noisy and often not useful. Namespaces have too many redecls and we don't have a good way of determining which of the comments are relevant and which should be ignored (e.g. because they come from code generators like the protobuf compiler). Reviewers: sammccall Reviewed By: sammccall Subscribers: ioeric, MaskRay, jkorous, cfe-commits Differential Revision: https://reviews.llvm.org/D48211 llvm-svn: 335718
This commit is contained in:
parent
0a566bc0ae
commit
da8dd8b800
|
@ -80,8 +80,16 @@ std::string getDocComment(const ASTContext &Ctx,
|
|||
if (Result.Kind != CodeCompletionResult::RK_Declaration)
|
||||
return "";
|
||||
auto *Decl = Result.getDeclaration();
|
||||
if (!Decl || !canRequestComment(Ctx, *Decl, CommentsFromHeaders))
|
||||
if (!Decl || llvm::isa<NamespaceDecl>(Decl)) {
|
||||
// Namespaces often have too many redecls for any particular redecl comment
|
||||
// to be useful. Moreover, we often confuse file headers or generated
|
||||
// comments with namespace comments. Therefore we choose to just ignore
|
||||
// the comments for namespaces.
|
||||
return "";
|
||||
}
|
||||
if (!canRequestComment(Ctx, *Decl, CommentsFromHeaders))
|
||||
return "";
|
||||
|
||||
const RawComment *RC = getCompletionComment(Ctx, Decl);
|
||||
if (!RC)
|
||||
return "";
|
||||
|
|
|
@ -1179,6 +1179,10 @@ TEST(CompletionTest, NonDocComments) {
|
|||
ClangdServer Server(CDB, FS, DiagConsumer, ClangdServer::optsForTest());
|
||||
|
||||
Annotations Source(R"cpp(
|
||||
// We ignore namespace comments, for rationale see CodeCompletionStrings.h.
|
||||
namespace comments_ns {
|
||||
}
|
||||
|
||||
// ------------------
|
||||
int comments_foo();
|
||||
|
||||
|
@ -1223,6 +1227,7 @@ TEST(CompletionTest, NonDocComments) {
|
|||
UnorderedElementsAre(AllOf(Not(IsDocumented()), Named("comments_foo")),
|
||||
AllOf(IsDocumented(), Named("comments_baz")),
|
||||
AllOf(IsDocumented(), Named("comments_quux")),
|
||||
AllOf(Not(IsDocumented()), Named("comments_ns")),
|
||||
// FIXME(ibiryukov): the following items should have
|
||||
// empty documentation, since they are separated from
|
||||
// a comment with an empty line. Unfortunately, I
|
||||
|
|
Loading…
Reference in New Issue