forked from OSchip/llvm-project
Downgrade err_iboutlet_object_type to a warning. It was breaking a bunch of code. We will reconsider promoting it back to an error later.
llvm-svn: 143470
This commit is contained in:
parent
c1b732d782
commit
5d6044e413
|
@ -1695,9 +1695,10 @@ def warn_attribute_ibaction: Warning<
|
|||
"ibaction attribute can only be applied to Objective-C instance methods">;
|
||||
def err_iboutletcollection_type : Error<
|
||||
"invalid type %0 as argument of iboutletcollection attribute">;
|
||||
def err_iboutlet_object_type : Error<
|
||||
def warn_iboutlet_object_type : Warning<
|
||||
"%select{ivar|property}2 with %0 attribute must "
|
||||
"be an object type (invalid %1)">;
|
||||
"be an object type (invalid %1)">,
|
||||
InGroup<DiagGroup<"invalid-iboutlet">>;
|
||||
def err_attribute_overloadable_not_function : Error<
|
||||
"'overloadable' attribute can only be applied to a function">;
|
||||
def err_attribute_overloadable_missing : Error<
|
||||
|
|
|
@ -760,14 +760,14 @@ static bool checkIBOutletCommon(Sema &S, Decl *D, const AttributeList &Attr) {
|
|||
// have an object reference type.
|
||||
if (const ObjCIvarDecl *VD = dyn_cast<ObjCIvarDecl>(D)) {
|
||||
if (!VD->getType()->getAs<ObjCObjectPointerType>()) {
|
||||
S.Diag(Attr.getLoc(), diag::err_iboutlet_object_type)
|
||||
S.Diag(Attr.getLoc(), diag::warn_iboutlet_object_type)
|
||||
<< Attr.getName() << VD->getType() << 0;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (const ObjCPropertyDecl *PD = dyn_cast<ObjCPropertyDecl>(D)) {
|
||||
if (!PD->getType()->getAs<ObjCObjectPointerType>()) {
|
||||
S.Diag(Attr.getLoc(), diag::err_iboutlet_object_type)
|
||||
S.Diag(Attr.getLoc(), diag::warn_iboutlet_object_type)
|
||||
<< Attr.getName() << PD->getType() << 1;
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -21,14 +21,14 @@ typedef void *PV;
|
|||
__attribute__((iboutletcollection(I, 1))) id ivar1; // expected-error {{attribute takes one argument}}
|
||||
__attribute__((iboutletcollection(B))) id ivar2; // expected-error {{invalid type 'B' as argument of iboutletcollection attribute}}
|
||||
__attribute__((iboutletcollection(PV))) id ivar3; // expected-error {{invalid type 'PV' as argument of iboutletcollection attribute}}
|
||||
__attribute__((iboutletcollection(PV))) void *ivar4; // expected-error {{ivar with 'iboutletcollection' attribute must be an object type (invalid 'void *')}}
|
||||
__attribute__((iboutletcollection(PV))) void *ivar4; // expected-warning {{ivar with 'iboutletcollection' attribute must be an object type (invalid 'void *')}}
|
||||
__attribute__((iboutletcollection(int))) id ivar5; // expected-error {{type argument of iboutletcollection attribute cannot be a builtin type}}
|
||||
__attribute__((iboutlet)) int ivar6; // expected-error {{ivar with 'iboutlet' attribute must be an object type}}
|
||||
__attribute__((iboutlet)) int ivar6; // expected-warning {{ivar with 'iboutlet' attribute must be an object type}}
|
||||
}
|
||||
@property (nonatomic, retain) __attribute__((iboutletcollection(I,2,3))) id prop1; // expected-error {{attribute takes one argument}}
|
||||
@property (nonatomic, retain) __attribute__((iboutletcollection(B))) id prop2; // expected-error {{invalid type 'B' as argument of iboutletcollection attribute}}
|
||||
|
||||
@property __attribute__((iboutletcollection(BAD))) int prop3; // expected-error {{property with 'iboutletcollection' attribute must be an object type (invalid 'int')}}
|
||||
@property __attribute__((iboutletcollection(BAD))) int prop3; // expected-warning {{property with 'iboutletcollection' attribute must be an object type (invalid 'int')}}
|
||||
@end
|
||||
|
||||
// rdar://10296078
|
||||
|
|
Loading…
Reference in New Issue