forked from OSchip/llvm-project
Add a warning for a missing copy attribute on a property that is a
block pointer. Radar 6441502 llvm-svn: 71190
This commit is contained in:
parent
81ded69511
commit
5580bdcaa2
|
@ -194,6 +194,9 @@ def warn_objc_property_default_assign_on_object : Warning<
|
|||
"default property attribute 'assign' not appropriate for non-gc object">;
|
||||
def warn_property_attr_mismatch : Warning<
|
||||
"property attribute in continuation class does not match the primary class">;
|
||||
def warn_objc_property_copy_missing_on_block : Warning<
|
||||
"'copy' attribute must be specified for the block property "
|
||||
"when -fobjc-gc-only is specified">;
|
||||
def err_use_continuation_class : Error<
|
||||
"attribute of property in continuation class of %0 can only be 'readwrite'">;
|
||||
def err_continuation_class : Error<"continuation class has no primary class">;
|
||||
|
|
|
@ -1750,6 +1750,11 @@ void Sema::CheckObjCPropertyAttributes(QualType PropertyTy,
|
|||
// <rdar://5168496&4855821&5607453&5096644&4947311&5698469&4947014&5168496>
|
||||
// (please trim this list while you are at it).
|
||||
}
|
||||
|
||||
if (!(Attributes & ObjCDeclSpec::DQ_PR_copy)
|
||||
&& getLangOptions().getGCMode() == LangOptions::GCOnly
|
||||
&& PropertyTy->isBlockPointerType())
|
||||
Diag(Loc, diag::warn_objc_property_copy_missing_on_block);
|
||||
}
|
||||
|
||||
Sema::DeclPtrTy Sema::ActOnProperty(Scope *S, SourceLocation AtLoc,
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
// RUN: clang-cc -triple x86_64-apple-darwin10 -fsyntax-only -verify -fblocks -fobjc-gc-only %s
|
||||
|
||||
@interface Thing {}
|
||||
|
||||
@property void(^someBlock)(void); // expected-warning {{'copy' attribute must be specified for the block property}}
|
||||
@property(copy) void(^OK)(void);
|
||||
|
||||
|
||||
@end
|
Loading…
Reference in New Issue