[CodeCompletion] Autocomplete NS_DESIGNATED_INITIALIZER in initializers

with arguments

rdar://21014571

Differential Revision: https://reviews.llvm.org/D27039


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@290879 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Alex Lorenz 2017-01-03 11:56:40 +00:00
parent be92cc306b
commit 89407989e8
2 changed files with 60 additions and 0 deletions

View File

@ -7471,6 +7471,23 @@ void Sema::CodeCompleteObjCMethodDeclSelector(Scope *S,
}
Results.ExitScope();
if (!AtParameterName && !SelIdents.empty() &&
SelIdents.front()->getName().startswith("init")) {
for (const auto &M : PP.macros()) {
if (M.first->getName() != "NS_DESIGNATED_INITIALIZER")
continue;
Results.EnterNewScope();
CodeCompletionBuilder Builder(Results.getAllocator(),
Results.getCodeCompletionTUInfo());
Builder.AddTypedTextChunk(
Builder.getAllocator().CopyString(M.first->getName()));
Results.AddResult(CodeCompletionResult(Builder.TakeString(), CCP_Macro,
CXCursor_MacroDefinition));
Results.ExitScope();
}
}
HandleCodeCompleteResults(this, CodeCompleter,
CodeCompletionContext::CCC_Other,
Results.data(),Results.size());

View File

@ -0,0 +1,43 @@
// Note: the run lines follow their respective tests, since line/column
// matter in this test.
// rdar://21014571
#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
@interface DesignatedInitializerCompletion
- (instancetype)init ;
- (instancetype)initWithFoo:(int)foo ;
- (instancetype)initWithX:(int)x andY:(int)y ;
@end
@implementation DesignatedInitializerCompletion
- (instancetype)init {
}
- (instancetype)initWithFoo:(int)foo {
}
- (instancetype)initWithX:(int)x andY:(int)y {
}
@end
// RUN: c-index-test -code-completion-at=%s:10:22 %s | FileCheck %s
// RUN: c-index-test -code-completion-at=%s:11:38 %s | FileCheck %s
// RUN: c-index-test -code-completion-at=%s:11:29 %s | FileCheck -check-prefix=CHECK-NONE %s
// RUN: c-index-test -code-completion-at=%s:11:34 %s | FileCheck -check-prefix=CHECK-NONE %s
// RUN: c-index-test -code-completion-at=%s:12:34 %s | FileCheck %s
// RUN: c-index-test -code-completion-at=%s:12:46 %s | FileCheck %s
// RUN: c-index-test -code-completion-at=%s:18:22 %s | FileCheck %s
// RUN: c-index-test -code-completion-at=%s:21:38 %s | FileCheck %s
// RUN: c-index-test -code-completion-at=%s:24:34 %s | FileCheck %s
// RUN: c-index-test -code-completion-at=%s:24:46 %s | FileCheck %s
// CHECK: macro definition:{TypedText NS_DESIGNATED_INITIALIZER} (70)
// CHECK-NONE-NOT: NS_DESIGNATED_INITIALIZER