From: Douglas Gregor Date: Thu, 26 Aug 2010 16:46:39 +0000 (+0000) Subject: Tweak the @selector completion to collapse multiple informative and X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2d9e21f4675232a39a39611a5b4bb1f4914b2742;p=clang Tweak the @selector completion to collapse multiple informative and typed-text blocks into one of each. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112194 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaCodeComplete.cpp b/lib/Sema/SemaCodeComplete.cpp index 392152630d..4c06fac012 100644 --- a/lib/Sema/SemaCodeComplete.cpp +++ b/lib/Sema/SemaCodeComplete.cpp @@ -4064,16 +4064,19 @@ void Sema::CodeCompleteObjCSelector(Scope *S, IdentifierInfo **SelIdents, continue; } + std::string Accumulator; for (unsigned I = 0, N = Sel.getNumArgs(); I != N; ++I) { - std::string Piece = Sel.getIdentifierInfoForSlot(I)->getName().str(); - Piece += ':'; - if (I < NumSelIdents) - Pattern->AddInformativeChunk(Piece); - else if (I == NumSelIdents) - Pattern->AddTypedTextChunk(Piece); - else - Pattern->AddTextChunk(Piece); + if (I == NumSelIdents) { + if (!Accumulator.empty()) { + Pattern->AddInformativeChunk(Accumulator); + Accumulator.clear(); + } + } + + Accumulator += Sel.getIdentifierInfoForSlot(I)->getName().str(); + Accumulator += ':'; } + Pattern->AddTypedTextChunk(Accumulator); Results.AddResult(Pattern); } Results.ExitScope(); diff --git a/test/Index/complete-at-exprstmt.m b/test/Index/complete-at-exprstmt.m index 834b42e4b3..cccfa261ca 100644 --- a/test/Index/complete-at-exprstmt.m +++ b/test/Index/complete-at-exprstmt.m @@ -46,10 +46,10 @@ void f() { // CHECK-CC3: TypedefDecl:{TypedText SEL} // CHECK-CC3: NotImplemented:{ResultType MyClass *}{TypedText self} // RUN: c-index-test -code-completion-at=%s:19:13 %s | FileCheck -check-prefix=CHECK-CC4 %s -// CHECK-CC4: NotImplemented:{TypedText add:}{Text to:} (30) -// CHECK-CC4: NotImplemented:{TypedText add:}{Text to:}{Text plus:} (30) +// CHECK-CC4: NotImplemented:{TypedText add:to:} (30) +// CHECK-CC4: NotImplemented:{TypedText add:to:plus:} (30) // CHECK-CC4: NotImplemented:{TypedText myMethod:} (30) // RUN: c-index-test -code-completion-at=%s:19:17 %s | FileCheck -check-prefix=CHECK-CC5 %s // CHECK-CC5: NotImplemented:{Informative add:}{TypedText to:} (30) -// CHECK-CC5: NotImplemented:{Informative add:}{TypedText to:}{Text plus:} (30) +// CHECK-CC5: NotImplemented:{Informative add:}{TypedText to:plus:} (30)