// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core.DynamicTypeChecker -verify %s
#definenil0typedefunsignedlongNSUInteger;typedefintBOOL;@protocolNSObject+ (id)alloc;- (id)init;@end@protocolNSCopying@end__attribute__((objc_root_class))@interfaceNSObject<NSObject>@end@interfaceNSString:NSObject<NSCopying>@end@interfaceNSMutableString:NSString@end@interfaceNSNumber:NSObject<NSCopying>@end@class MyType;voidtestTypeCheck(NSString*str){id obj = str;NSNumber*num = obj;// expected-warning {{}}
(void)num;}voidtestForwardDeclarations(NSString*str){id obj = str;// Do not warn, since no information is available whether MyType is a sub or
// super class of any other type.
MyType *num = obj;// no warning
(void)num;}