After further discussion, rename attribute 'objc_disable_automatic_synthesis' to 'objc_requires_property_definitions'.

llvm-svn: 147622
This commit is contained in:
Ted Kremenek 2012-01-05 22:47:47 +00:00
parent 3c88eae154
commit 0c2c90b1ad
9 changed files with 25 additions and 25 deletions

View File

@ -866,13 +866,13 @@ public:
return false;
}
/// isObjCSuppressAutosynthesis - Checks that a class or one of its super
/// isObjCRequiresPropertyDefs - Checks that a class or one of its super
/// classes must not be auto-synthesized. Returns class decl. if it must not be;
/// 0, otherwise.
const ObjCInterfaceDecl *isObjCSuppressAutosynthesis() const {
const ObjCInterfaceDecl *isObjCRequiresPropertyDefs() const {
const ObjCInterfaceDecl *Class = this;
while (Class) {
if (Class->hasAttr<ObjCSuppressAutosynthesisAttr>())
if (Class->hasAttr<ObjCRequiresPropertyDefsAttr>())
return Class;
Class = Class->getSuperClass();
}

View File

@ -524,8 +524,8 @@ def ArcWeakrefUnavailable : InheritableAttr {
let Spellings = ["objc_arc_weak_reference_unavailable"];
}
def ObjCSuppressAutosynthesis : InheritableAttr {
let Spellings = ["objc_disable_automatic_synthesis"];
def ObjCRequiresPropertyDefs : InheritableAttr {
let Spellings = ["objc_requires_property_definitions"];
}
def Unused : InheritableAttr {

View File

@ -380,7 +380,7 @@ def note_implementation_declared : Note<
def note_class_declared : Note<
"class is declared here">;
def note_suppressed_class_declare : Note<
"class with specified objc_disable_automatic_synthesis attribute is declared here">;
"class with specified objc_requires_property_definitions attribute is declared here">;
def warn_dup_category_def : Warning<
"duplicate definition of category %1 on interface %0">;
def err_conflicting_super_class : Error<"conflicting super class name %0">;
@ -1374,7 +1374,7 @@ def err_attribute_wrong_number_arguments : Error<
def err_attribute_too_many_arguments : Error<
"attribute takes no more than %0 argument%s0">;
def err_suppress_autosynthesis : Error<
"objc_disable_automatic_synthesis attribute may only be specified on a class"
"objc_requires_property_definitions attribute may only be specified on a class"
"to a class declaration">;
def err_attribute_too_few_arguments : Error<
"attribute takes at least %0 argument%s0">;

View File

@ -169,7 +169,7 @@ public:
AT_analyzer_noreturn,
AT_annotate,
AT_arc_weakref_unavailable,
AT_objc_disable_automatic_synthesis,
AT_objc_requires_property_definitions,
AT_availability, // Clang-specific
AT_base_check,
AT_blocks,

View File

@ -108,7 +108,7 @@ AttributeList::Kind AttributeList::getKind(const IdentifierInfo *Name) {
.Case("weak", AT_weak)
.Case("weakref", AT_weakref)
.Case("objc_arc_weak_reference_unavailable", AT_arc_weakref_unavailable)
.Case("objc_disable_automatic_synthesis", AT_objc_disable_automatic_synthesis)
.Case("objc_requires_property_definitions", AT_objc_requires_property_definitions)
.Case("pure", AT_pure)
.Case("mode", AT_mode)
.Case("used", AT_used)

View File

@ -1579,7 +1579,7 @@ static void handleArcWeakrefUnavailableAttr(Sema &S, Decl *D,
Attr.getRange(), S.Context));
}
static void handleObjCSuppressAutosynthesisAttr(Sema &S, Decl *D,
static void handleObjCRequiresPropertyDefsAttr(Sema &S, Decl *D,
const AttributeList &Attr) {
if (!isa<ObjCInterfaceDecl>(D)) {
S.Diag(Attr.getLoc(), diag::err_suppress_autosynthesis);
@ -1592,7 +1592,7 @@ static void handleObjCSuppressAutosynthesisAttr(Sema &S, Decl *D,
return;
}
D->addAttr(::new (S.Context) ObjCSuppressAutosynthesisAttr(
D->addAttr(::new (S.Context) ObjCRequiresPropertyDefsAttr(
Attr.getRange(), S.Context));
}
@ -3620,8 +3620,8 @@ static void ProcessInheritableDeclAttr(Sema &S, Scope *scope, Decl *D,
case AttributeList::AT_arc_weakref_unavailable:
handleArcWeakrefUnavailableAttr (S, D, Attr);
break;
case AttributeList::AT_objc_disable_automatic_synthesis:
handleObjCSuppressAutosynthesisAttr (S, D, Attr);
case AttributeList::AT_objc_requires_property_definitions:
handleObjCRequiresPropertyDefsAttr (S, D, Attr);
break;
case AttributeList::AT_unused: handleUnusedAttr (S, D, Attr); break;
case AttributeList::AT_returns_twice:

View File

@ -1667,7 +1667,7 @@ void Sema::ImplMethodsVsClassMethods(Scope *S, ObjCImplDecl* IMPDecl,
// of the property in the @implementation.
if (const ObjCInterfaceDecl *IDecl = dyn_cast<ObjCInterfaceDecl>(CDecl))
if (!(LangOpts.ObjCDefaultSynthProperties && LangOpts.ObjCNonFragileABI2) ||
IDecl->isObjCSuppressAutosynthesis())
IDecl->isObjCRequiresPropertyDefs())
DiagnoseUnimplementedProperties(S, IMPDecl, CDecl, InsMap);
llvm::DenseSet<Selector> ClsMap;

View File

@ -857,7 +857,7 @@ Decl *Sema::ActOnPropertyImplDecl(Scope *S,
IC->addPropertyImplementation(PIDecl);
if (getLangOptions().ObjCDefaultSynthProperties &&
getLangOptions().ObjCNonFragileABI2 &&
!IDecl->isObjCSuppressAutosynthesis()) {
!IDecl->isObjCRequiresPropertyDefs()) {
// Diagnose if an ivar was lazily synthesdized due to a previous
// use and if 1) property is @dynamic or 2) property is synthesized
// but it requires an ivar of different name.
@ -1356,7 +1356,7 @@ void Sema::DefaultSynthesizeProperties(Scope *S, Decl *D) {
if (!IC)
return;
if (ObjCInterfaceDecl* IDecl = IC->getClassInterface())
if (!IDecl->isObjCSuppressAutosynthesis())
if (!IDecl->isObjCRequiresPropertyDefs())
DefaultSynthesizeProperties(S, IC, IDecl);
}
@ -1396,7 +1396,7 @@ void Sema::DiagnoseUnimplementedProperties(Scope *S, ObjCImplDecl* IMPDecl,
diag::note_property_declare);
if (LangOpts.ObjCDefaultSynthProperties && LangOpts.ObjCNonFragileABI2)
if (ObjCInterfaceDecl *ID = dyn_cast<ObjCInterfaceDecl>(CDecl))
if (const ObjCInterfaceDecl *RID = ID->isObjCSuppressAutosynthesis())
if (const ObjCInterfaceDecl *RID = ID->isObjCRequiresPropertyDefs())
Diag(RID->getLocation(), diag::note_suppressed_class_declare);
}
@ -1411,7 +1411,7 @@ void Sema::DiagnoseUnimplementedProperties(Scope *S, ObjCImplDecl* IMPDecl,
diag::note_property_declare);
if (LangOpts.ObjCDefaultSynthProperties && LangOpts.ObjCNonFragileABI2)
if (ObjCInterfaceDecl *ID = dyn_cast<ObjCInterfaceDecl>(CDecl))
if (const ObjCInterfaceDecl *RID = ID->isObjCSuppressAutosynthesis())
if (const ObjCInterfaceDecl *RID = ID->isObjCRequiresPropertyDefs())
Diag(RID->getLocation(), diag::note_suppressed_class_declare);
}
}

View File

@ -1,10 +1,10 @@
// RUN: %clang_cc1 -x objective-c -fsyntax-only -fobjc-default-synthesize-properties -verify %s
// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -fobjc-default-synthesize-properties -verify %s
#if __has_attribute(objc_disable_automatic_synthesis)
__attribute ((objc_disable_automatic_synthesis))
#if __has_attribute(objc_requires_property_definitions)
__attribute ((objc_requires_property_definitions))
#endif
@interface NoAuto // expected-note 2 {{class with specified objc_disable_automatic_synthesis attribute is declared here}}
@interface NoAuto // expected-note 2 {{class with specified objc_requires_property_definitions attribute is declared here}}
@property int NoAutoProp; // expected-note 2 {{property declared here}}
@end
@ -12,8 +12,8 @@ __attribute ((objc_disable_automatic_synthesis))
// expected-warning {{property 'NoAutoProp' requires method 'setNoAutoProp:'}}
@end
__attribute ((objc_disable_automatic_synthesis)) // redundant, just for testing
@interface Sub : NoAuto // expected-note 3 {{class with specified objc_disable_automatic_synthesis attribute is declared here}}
__attribute ((objc_requires_property_definitions)) // redundant, just for testing
@interface Sub : NoAuto // expected-note 3 {{class with specified objc_requires_property_definitions attribute is declared here}}
@property (copy) id SubProperty; // expected-note 2 {{property declared here}}
@end
@ -33,9 +33,9 @@ __attribute ((objc_disable_automatic_synthesis)) // redundant, just for testing
- (id) DeepMustSynthProperty { return 0; }
@end
__attribute ((objc_disable_automatic_synthesis))
__attribute ((objc_requires_property_definitions))
@interface Deep(CAT) // expected-error {{attributes may not be specified on a category}}
@end
__attribute ((objc_disable_automatic_synthesis)) // expected-error {{objc_disable_automatic_synthesis attribute may only be specified on a class}}
__attribute ((objc_requires_property_definitions)) // expected-error {{objc_requires_property_definitions attribute may only be specified on a class}}
@protocol P @end