diff options
author | Dmitri Gribenko <gribozavr@gmail.com> | 2012-07-02 17:35:10 +0000 |
---|---|---|
committer | Dmitri Gribenko <gribozavr@gmail.com> | 2012-07-02 17:35:10 +0000 |
commit | 3292d06a1ba34eaa99226cc2133e03b47c471c3b (patch) | |
tree | 5848f53d170f2bfae94597eef269249e6e647e46 /clang/lib/Sema/CodeCompleteConsumer.cpp | |
parent | 22972210287a4977a2054e180066007d7368df9f (diff) | |
download | bcm5719-llvm-3292d06a1ba34eaa99226cc2133e03b47c471c3b.tar.gz bcm5719-llvm-3292d06a1ba34eaa99226cc2133e03b47c471c3b.zip |
Add a new libclang completion API to get brief documentation comment that is
attached to a declaration in the completion string.
Since extracting comments isn't free, a new code completion option is
introduced.
A new code completion option that enables including brief comments
into CodeCompletionString should be a, err, code completion option.
But because ASTUnit caches global declarations during parsing before
even completion consumer is created, the option is duplicated as a
translation unit option (in both libclang and ASTUnit, like the option
to cache code completion results).
llvm-svn: 159539
Diffstat (limited to 'clang/lib/Sema/CodeCompleteConsumer.cpp')
-rw-r--r-- | clang/lib/Sema/CodeCompleteConsumer.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/clang/lib/Sema/CodeCompleteConsumer.cpp b/clang/lib/Sema/CodeCompleteConsumer.cpp index dfbc98f3515..a8357255343 100644 --- a/clang/lib/Sema/CodeCompleteConsumer.cpp +++ b/clang/lib/Sema/CodeCompleteConsumer.cpp @@ -194,10 +194,11 @@ CodeCompletionString::CodeCompletionString(const Chunk *Chunks, const char **Annotations, unsigned NumAnnotations, CXCursorKind ParentKind, - StringRef ParentName) + StringRef ParentName, + const char *BriefComment) : NumChunks(NumChunks), NumAnnotations(NumAnnotations), Priority(Priority), Availability(Availability), ParentKind(ParentKind), - ParentName(ParentName) + ParentName(ParentName), BriefComment(BriefComment) { assert(NumChunks <= 0xffff); assert(NumAnnotations <= 0xffff); @@ -338,7 +339,7 @@ CodeCompletionString *CodeCompletionBuilder::TakeString() { = new (Mem) CodeCompletionString(Chunks.data(), Chunks.size(), Priority, Availability, Annotations.data(), Annotations.size(), - ParentKind, ParentName); + ParentKind, ParentName, BriefComment); Chunks.clear(); return Result; } @@ -394,6 +395,10 @@ void CodeCompletionBuilder::addParentContext(DeclContext *DC) { ParentName = getCodeCompletionTUInfo().getParentName(DC); } +void CodeCompletionBuilder::addBriefComment(StringRef Comment) { + BriefComment = Allocator.CopyString(Comment); +} + unsigned CodeCompletionResult::getPriorityFromDecl(NamedDecl *ND) { if (!ND) return CCP_Unlikely; @@ -474,8 +479,11 @@ PrintingCodeCompleteConsumer::ProcessCodeCompleteResults(Sema &SemaRef, OS << " (Hidden)"; if (CodeCompletionString *CCS = Results[I].CreateCodeCompletionString(SemaRef, getAllocator(), - CCTUInfo)) { + CCTUInfo, + includeBriefComments())) { OS << " : " << CCS->getAsString(); + if (const char *BriefComment = CCS->getBriefComment()) + OS << " : " << BriefComment; } OS << '\n'; @@ -489,7 +497,8 @@ PrintingCodeCompleteConsumer::ProcessCodeCompleteResults(Sema &SemaRef, OS << Results[I].Macro->getName(); if (CodeCompletionString *CCS = Results[I].CreateCodeCompletionString(SemaRef, getAllocator(), - CCTUInfo)) { + CCTUInfo, + includeBriefComments())) { OS << " : " << CCS->getAsString(); } OS << '\n'; |