comment parsing: Properties are considered like methods, and people

think of them as having return values that may be computed. Don't
warn when using @return in their comment. // rdar://13189938

llvm-svn: 176147
This commit is contained in:
Fariborz Jahanian 2013-02-27 00:46:06 +00:00
parent d010ac9a48
commit 81bbee1ed8
3 changed files with 27 additions and 0 deletions

View File

@ -201,6 +201,7 @@ public:
void resolveParamCommandIndexes(const FullComment *FC);
bool isFunctionDecl();
bool isObjCPropertyDecl();
bool isTemplateOrSpecialization();
ArrayRef<const ParmVarDecl *> getParamVars();

View File

@ -465,6 +465,9 @@ void Sema::checkReturnsCommand(const BlockCommandComment *Command) {
}
return;
}
else if (isObjCPropertyDecl())
return;
Diag(Command->getLocation(),
diag::warn_doc_returns_not_attached_to_a_function_decl)
<< Command->getCommandName(Traits)
@ -652,6 +655,14 @@ bool Sema::isFunctionDecl() {
inspectThisDecl();
return ThisDeclInfo->getKind() == DeclInfo::FunctionKind;
}
bool Sema::isObjCPropertyDecl() {
if (!ThisDeclInfo)
return false;
if (!ThisDeclInfo->IsFilled)
inspectThisDecl();
return ThisDeclInfo->CurrentDecl->getKind() == Decl::ObjCProperty;
}
bool Sema::isTemplateOrSpecialization() {
if (!ThisDeclInfo)

View File

@ -0,0 +1,15 @@
// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-objc-root-class -Wdocumentation -verify %s
// expected-no-diagnostics
// rdar://13189938
@interface NSPredicate
/// The full predicate to be used for drawing objects from the store.
/// It is an AND of the parent's `prefixPredicate` (e.g., the selection for
/// volume number) and the `filterPredicate` (selection by matching the name).
/// @return `nil` if there is no search string, and no prefix.
@property(readonly) NSPredicate *andPredicate;
/// The predicate that matches the string to be searched for. This
/// @return `nil` if there is no search string.
@property(readonly) NSPredicate *filterPredicate;
@end