forked from OSchip/llvm-project
objc: diagnose invalid argument to an
iboutletcollection attribute intead of crashing. // rdar://10296078 llvm-svn: 142364
This commit is contained in:
parent
dfa7fb8fe6
commit
6b70865ec0
|
@ -138,7 +138,8 @@ def err_function_declared_typedef : Error<
|
|||
"function definition declared 'typedef'">;
|
||||
def err_iboutletcollection_builtintype : Error<
|
||||
"type argument of iboutletcollection attribute cannot be a builtin type">;
|
||||
|
||||
def err_iboutletcollection_with_protocol : Error<
|
||||
"invalid argument of iboutletcollection attribute">;
|
||||
def err_at_defs_cxx : Error<"@defs is not supported in Objective-C++">;
|
||||
def err_at_in_class : Error<"unexpected '@' in member specification">;
|
||||
|
||||
|
|
|
@ -245,6 +245,13 @@ void Parser::ParseGNUAttributeArgs(IdentifierInfo *AttrName,
|
|||
ConsumeToken(); // Eat the comma, move to the next argument
|
||||
}
|
||||
}
|
||||
else if (Tok.is(tok::less) && AttrName->isStr("iboutletcollection")) {
|
||||
if (!ExpectAndConsume(tok::less, diag::err_expected_less_after, "<",
|
||||
tok::greater)) {
|
||||
Diag(Tok, diag::err_iboutletcollection_with_protocol);
|
||||
SkipUntil(tok::r_paren, false, true); // skip until ')'
|
||||
}
|
||||
}
|
||||
|
||||
SourceLocation RParen = Tok.getLocation();
|
||||
if (!ExpectAndConsume(tok::r_paren, diag::err_expected_rparen)) {
|
||||
|
|
|
@ -29,3 +29,13 @@ typedef void *PV;
|
|||
@property __attribute__((iboutletcollection(BAD))) int prop3; // expected-error {{property with 'iboutletcollection' attribute must be an object type (invalid 'int')}}
|
||||
@end
|
||||
|
||||
// rdar://10296078
|
||||
@interface ParentRDar10296078 @end
|
||||
@class NSArray;
|
||||
@protocol RDar10296078_Protocol;
|
||||
@class RDar10296078_OtherClass;
|
||||
|
||||
@interface RDar10296078 : ParentRDar10296078
|
||||
@property (nonatomic, strong)
|
||||
__attribute__((iboutletcollection(RDar10296078_OtherClass<RDar10296078_Protocol>))) NSArray *stuff; // expected-error {{invalid argument of iboutletcollection attribute}}
|
||||
@end
|
||||
|
|
Loading…
Reference in New Issue