forked from OSchip/llvm-project
Forgot to include nested protocols in collection, resulting in
bogus warning. Fixes radar 7682116. llvm-svn: 97157
This commit is contained in:
parent
048b6485b7
commit
8e3b9db27f
|
@ -945,9 +945,11 @@ void ASTContext::CollectInheritedProtocols(const Decl *CDecl,
|
|||
ObjCProtocolDecl *Proto = (*P);
|
||||
Protocols.insert(Proto);
|
||||
for (ObjCProtocolDecl::protocol_iterator P = Proto->protocol_begin(),
|
||||
PE = Proto->protocol_end(); P != PE; ++P)
|
||||
PE = Proto->protocol_end(); P != PE; ++P) {
|
||||
Protocols.insert(*P);
|
||||
CollectInheritedProtocols(*P, Protocols);
|
||||
}
|
||||
}
|
||||
|
||||
// Categories of this Interface.
|
||||
for (const ObjCCategoryDecl *CDeclChain = OI->getCategoryList();
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
||||
// radar 7682116
|
||||
|
||||
@interface Super @end
|
||||
|
||||
@interface NSArray : Super @end
|
||||
@interface NSSet : Super @end
|
||||
|
||||
@protocol MyProtocol
|
||||
- (void)myMethod;
|
||||
@end
|
||||
|
||||
@protocol MyProtocol2 <MyProtocol>
|
||||
- (void)myMethod2;
|
||||
@end
|
||||
|
||||
@interface NSArray() <MyProtocol2>
|
||||
@end
|
||||
|
||||
@interface NSSet() <MyProtocol>
|
||||
@end
|
||||
|
||||
int main (int argc, const char * argv[]) {
|
||||
NSArray *array = (void*)0;
|
||||
NSSet *set = (void*)0;
|
||||
id <MyProtocol> instance = (argc) ? array : set;
|
||||
instance = (void*)0;
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue