This revision was automatically updated to reflect the committed changes.
Closed by commit rCTE332460: [clangd] Parse all comments in Sema and 
completion. (authored by ibiryukov, committed by ).

Changed prior to commit:
  https://reviews.llvm.org/D46002?vs=146831&id=147064#toc

Repository:
  rCTE Clang Tools Extra

https://reviews.llvm.org/D46002

Files:
  clangd/ClangdUnit.cpp
  clangd/CodeComplete.cpp
  unittests/clangd/CodeCompleteTests.cpp


Index: unittests/clangd/CodeCompleteTests.cpp
===================================================================
--- unittests/clangd/CodeCompleteTests.cpp
+++ unittests/clangd/CodeCompleteTests.cpp
@@ -628,6 +628,30 @@
                                             Doc("Doooc"), Detail("void"))));
 }
 
+TEST(CompletionTest, Documentation) {
+  auto Results = completions(
+      R"cpp(
+      // Non-doxygen comment.
+      int foo();
+      /// Doxygen comment.
+      /// \param int a
+      int bar(int a);
+      /* Multi-line
+         block comment
+      */
+      int baz();
+
+      int x = ^
+     )cpp");
+  EXPECT_THAT(Results.items,
+              Contains(AllOf(Named("foo"), Doc("Non-doxygen comment."))));
+  EXPECT_THAT(
+      Results.items,
+      Contains(AllOf(Named("bar"), Doc("Doxygen comment.\n\\param int a"))));
+  EXPECT_THAT(Results.items,
+              Contains(AllOf(Named("baz"), Doc("Multi-line\nblock comment"))));
+}
+
 TEST(CodeCompleteTest, DisableTypoCorrection) {
   auto Results = completions(R"cpp(
      namespace clang { int v; }
Index: clangd/ClangdUnit.cpp
===================================================================
--- clangd/ClangdUnit.cpp
+++ clangd/ClangdUnit.cpp
@@ -25,6 +25,7 @@
 #include "clang/Sema/Sema.h"
 #include "clang/Serialization/ASTWriter.h"
 #include "clang/Tooling/CompilationDatabase.h"
+#include "clang/Basic/LangOptions.h"
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/Support/CrashRecoveryContext.h"
@@ -316,6 +317,7 @@
     }
     // createInvocationFromCommandLine sets DisableFree.
     CI->getFrontendOpts().DisableFree = false;
+    CI->getLangOpts()->CommentOpts.ParseAllComments = true;
   }
 
   std::unique_ptr<llvm::MemoryBuffer> ContentsBuffer =
Index: clangd/CodeComplete.cpp
===================================================================
--- clangd/CodeComplete.cpp
+++ clangd/CodeComplete.cpp
@@ -25,6 +25,7 @@
 #include "Trace.h"
 #include "URI.h"
 #include "index/Index.h"
+#include "clang/Basic/LangOptions.h"
 #include "clang/Format/Format.h"
 #include "clang/Frontend/CompilerInstance.h"
 #include "clang/Frontend/FrontendActions.h"
@@ -648,6 +649,7 @@
     return false;
   }
   CI->getFrontendOpts().DisableFree = false;
+  CI->getLangOpts()->CommentOpts.ParseAllComments = true;
 
   std::unique_ptr<llvm::MemoryBuffer> ContentsBuffer =
       llvm::MemoryBuffer::getMemBufferCopy(Input.Contents, Input.FileName);


Index: unittests/clangd/CodeCompleteTests.cpp
===================================================================
--- unittests/clangd/CodeCompleteTests.cpp
+++ unittests/clangd/CodeCompleteTests.cpp
@@ -628,6 +628,30 @@
                                             Doc("Doooc"), Detail("void"))));
 }
 
+TEST(CompletionTest, Documentation) {
+  auto Results = completions(
+      R"cpp(
+      // Non-doxygen comment.
+      int foo();
+      /// Doxygen comment.
+      /// \param int a
+      int bar(int a);
+      /* Multi-line
+         block comment
+      */
+      int baz();
+
+      int x = ^
+     )cpp");
+  EXPECT_THAT(Results.items,
+              Contains(AllOf(Named("foo"), Doc("Non-doxygen comment."))));
+  EXPECT_THAT(
+      Results.items,
+      Contains(AllOf(Named("bar"), Doc("Doxygen comment.\n\\param int a"))));
+  EXPECT_THAT(Results.items,
+              Contains(AllOf(Named("baz"), Doc("Multi-line\nblock comment"))));
+}
+
 TEST(CodeCompleteTest, DisableTypoCorrection) {
   auto Results = completions(R"cpp(
      namespace clang { int v; }
Index: clangd/ClangdUnit.cpp
===================================================================
--- clangd/ClangdUnit.cpp
+++ clangd/ClangdUnit.cpp
@@ -25,6 +25,7 @@
 #include "clang/Sema/Sema.h"
 #include "clang/Serialization/ASTWriter.h"
 #include "clang/Tooling/CompilationDatabase.h"
+#include "clang/Basic/LangOptions.h"
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/Support/CrashRecoveryContext.h"
@@ -316,6 +317,7 @@
     }
     // createInvocationFromCommandLine sets DisableFree.
     CI->getFrontendOpts().DisableFree = false;
+    CI->getLangOpts()->CommentOpts.ParseAllComments = true;
   }
 
   std::unique_ptr<llvm::MemoryBuffer> ContentsBuffer =
Index: clangd/CodeComplete.cpp
===================================================================
--- clangd/CodeComplete.cpp
+++ clangd/CodeComplete.cpp
@@ -25,6 +25,7 @@
 #include "Trace.h"
 #include "URI.h"
 #include "index/Index.h"
+#include "clang/Basic/LangOptions.h"
 #include "clang/Format/Format.h"
 #include "clang/Frontend/CompilerInstance.h"
 #include "clang/Frontend/FrontendActions.h"
@@ -648,6 +649,7 @@
     return false;
   }
   CI->getFrontendOpts().DisableFree = false;
+  CI->getLangOpts()->CommentOpts.ParseAllComments = true;
 
   std::unique_ptr<llvm::MemoryBuffer> ContentsBuffer =
       llvm::MemoryBuffer::getMemBufferCopy(Input.Contents, Input.FileName);
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to