зеркало из https://github.com/microsoft/clang-1.git
documentation parsing. Provide code completion comment
for self.GetterName where GetterName is the getter method for a property with name different from the property name (declared via a property getter attribute) // rdar://12791315 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177744 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
82f0aff67d
Коммит
c02ddb23c0
|
@ -632,6 +632,7 @@ public:
|
||||||
/// \brief Add the parent context information to this code completion.
|
/// \brief Add the parent context information to this code completion.
|
||||||
void addParentContext(const DeclContext *DC);
|
void addParentContext(const DeclContext *DC);
|
||||||
|
|
||||||
|
const char *getBriefComment() const { return BriefComment; }
|
||||||
void addBriefComment(StringRef Comment);
|
void addBriefComment(StringRef Comment);
|
||||||
|
|
||||||
StringRef getParentName() const { return ParentName; }
|
StringRef getParentName() const { return ParentName; }
|
||||||
|
|
|
@ -2541,6 +2541,20 @@ CodeCompletionResult::CreateCodeCompletionString(ASTContext &Ctx,
|
||||||
if (Declaration) {
|
if (Declaration) {
|
||||||
Result.addParentContext(Declaration->getDeclContext());
|
Result.addParentContext(Declaration->getDeclContext());
|
||||||
Pattern->ParentName = Result.getParentName();
|
Pattern->ParentName = Result.getParentName();
|
||||||
|
// Provide code completion comment for self.GetterName where
|
||||||
|
// GetterName is the getter method for a property with name
|
||||||
|
// different from the property name (declared via a property
|
||||||
|
// getter attribute.
|
||||||
|
const NamedDecl *ND = Declaration;
|
||||||
|
if (const ObjCMethodDecl *M = dyn_cast<ObjCMethodDecl>(ND))
|
||||||
|
if (M->isPropertyAccessor())
|
||||||
|
if (const ObjCPropertyDecl *PDecl = M->findPropertyDecl())
|
||||||
|
if (PDecl->getGetterName() == M->getSelector() &&
|
||||||
|
PDecl->getIdentifier() != M->getIdentifier())
|
||||||
|
if (const RawComment *RC = Ctx.getRawCommentForAnyRedecl(PDecl)) {
|
||||||
|
Result.addBriefComment(RC->getBriefText(Ctx));
|
||||||
|
Pattern->BriefComment = Result.getBriefComment();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return Pattern;
|
return Pattern;
|
||||||
|
|
|
@ -49,6 +49,7 @@
|
||||||
p = [self PropertyInPrimaryClass];
|
p = [self PropertyInPrimaryClass];
|
||||||
p = [self Record];
|
p = [self Record];
|
||||||
[self setThisRecord : (id)0 ];
|
[self setThisRecord : (id)0 ];
|
||||||
|
p = self.GetterInClassExtension;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@end
|
@end
|
||||||
|
@ -66,3 +67,6 @@
|
||||||
|
|
||||||
// RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:51:9 %s | FileCheck -check-prefix=CC5 %s
|
// RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:51:9 %s | FileCheck -check-prefix=CC5 %s
|
||||||
// CHECK-CC5: {TypedText setThisRecord:}{Placeholder (id)}{{.*}}(brief comment: This is Record)
|
// CHECK-CC5: {TypedText setThisRecord:}{Placeholder (id)}{{.*}}(brief comment: This is Record)
|
||||||
|
|
||||||
|
// RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:52:12 %s | FileCheck -check-prefix=CC6 %s
|
||||||
|
// CHECK-CC6: {TypedText GetterInClassExtension}{{.*}}(brief comment: This is PropertyInClassExtension)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче