From 75ab414cac234145b81fa7d2dfcf15271d8db87d Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Mon, 18 Oct 2010 21:34:55 +0000 Subject: [PATCH] Provide code completion for types after the '^' that starts a block literal. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116754 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Parse/ParseExpr.cpp | 5 +++++ test/Index/complete-blocks.m | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/lib/Parse/ParseExpr.cpp b/lib/Parse/ParseExpr.cpp index 2785f1b14d..c4d09f2816 100644 --- a/lib/Parse/ParseExpr.cpp +++ b/lib/Parse/ParseExpr.cpp @@ -1743,6 +1743,11 @@ bool Parser::ParseExpressionList(llvm::SmallVectorImpl &Exprs, /// [clang] specifier-qualifier-list block-declarator /// void Parser::ParseBlockId() { + if (Tok.is(tok::code_completion)) { + Actions.CodeCompleteOrdinaryName(getCurScope(), Sema::PCC_Type); + ConsumeCodeCompletionToken(); + } + // Parse the specifier-qualifier-list piece. DeclSpec DS; ParseSpecifierQualifierList(DS); diff --git a/test/Index/complete-blocks.m b/test/Index/complete-blocks.m index 61e363e375..18369d2c5a 100644 --- a/test/Index/complete-blocks.m +++ b/test/Index/complete-blocks.m @@ -43,3 +43,9 @@ void test_C(C *c) { // CHECK-CC3: ObjCInstanceMethodDecl:{ResultType id}{TypedText method3:}{Placeholder ^int(void)b} (20) // RUN: c-index-test -code-completion-at=%s:33:6 %s | FileCheck -check-prefix=CHECK-CC4 %s // CHECK-CC4: ObjCInstanceMethodDecl:{ResultType id}{TypedText method4:}{Placeholder ^(void)arg} (20) +// RUN: c-index-test -code-completion-at=%s:25:15 %s | FileCheck -check-prefix=CHECK-CC5 %s +// CHECK-CC5: TypedefDecl:{TypedText block_t} (50) +// CHECK-CC5: TypedefDecl:{TypedText Class} (50) +// CHECK-CC5-NOT: test_A +// CHECK-CC5: {TypedText union} (50) + -- 2.40.0