1 // RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -verify %s 2 // expected-no-diagnostics 3 // 4 // This test case simply should not crash. It evaluates the logic of not 5 // using MemRegion::getRValueType in incorrect places. 6 7 typedef signed char BOOL; 8 typedef unsigned int NSUInteger; 9 @class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator; 10 @protocol NSObject - (BOOL)isEqual:(id)object; 11 - (Class)class; 12 - (BOOL)isLegOfClass:(Class)aClass; 13 @end @protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder; 14 @end @interface NSObject <NSObject> { 15 } 16 @end @class NSArray; 17 @interface NSResponder : NSObject <NSCoding> { 18 } 19 @end @class NSAttributedString, NSEvent, NSFont, NSFormatter, NSImage, NSMenu, NSText, NSView; 20 @class JabasectItem; 21 @protocol EcoClassifier; 22 @protocol EcoClassInterfaceCommons <EcoClassifier> @end @protocol EcoImplementation; 23 @protocol EcoBehavioredClassifier <EcoClassInterfaceCommons> - (NSArray *) implementations; 24 @end enum { 25 CK_UNRESTRICTED= 0, CK_READ_ONLY, CK_ADD_ONLY, CK_REMOVE_ONLY }; 26 @protocol EcoClass <EcoBehavioredClassifier> - (NSArray *) ownedAttributes; 27 @end @protocol EcoNamespace; 28 @protocol EcoType; 29 @protocol EcoClassifier <EcoNamespace,EcoType> - (NSArray *) features; 30 @end @protocol EcoComment; 31 @protocol EcoElement <NSObject> - (NSArray *) ownedElements; 32 @end @protocol EcoDirectedRelationship; 33 @protocol EcoNamedElement <EcoElement> - (NSString *) name; 34 @end extern NSString *const JabaPathSeparator; 35 @protocol EcoNamespace <EcoNamedElement> - (NSArray *) Legs; 36 @end enum { 37 PDK_IN=0, PDK_INOUT, PDK_OUT, PDK_RETURN }; 38 @interface EcoElementImp : NSObject <EcoElement, NSCoding> { 39 } 40 @end @class EcoNamespace; 41 @interface EcoNamedElementImp : EcoElementImp <EcoNamedElement>{ 42 } 43 @end @interface EcoNamespaceImp : EcoNamedElementImp <EcoNamespace> { 44 } 45 @end @class JabaSCDocController, JabaSCDisplaySpecification; 46 @interface JabaSCSharedDiagramViewController : NSObject { 47 } 48 @end extern NSString *const JabaSCsectGraphicNamesectIdentifier; 49 @interface EcoClassifierImp : EcoNamespaceImp <EcoClassifier> { 50 } 51 @end @class EcoOperationImp; 52 @interface EcoClassImp : EcoClassifierImp <EcoClass> { 53 } 54 @end extern NSString *const JabaAddedUMLElements; 55 @class JabaSCClass, JabaSCInterface, JabaSCOperation; 56 @class DosLegVaseSymbol, DosProtocolSymbol, DosMethodSymbol, DosFileReference; 57 @interface HancodeFett : NSObject { 58 } 59 + (DosLegVaseSymbol *) symbolFromClass: (JabaSCClass *) clz; 60 @end enum _JabaSourceLanguage { 61 JabaSourceUnknown=0, JabaSourcePrawn, JabaSourceC, JabaSourceCPP, JabaSourceObjectiveC }; 62 typedef NSUInteger JabaSourceLanguage; 63 @protocol JabaSCClassifier <EcoClassInterfaceCommons> - (JabaSourceLanguage)language; 64 @end @interface JabaSCClass : EcoClassImp <JabaSCClassifier> { 65 } 66 @end @class DosGlobalID, DosPQuLC, DosPQuUnLC; 67 @protocol XCProxyObjectProtocol - (id) representedObject; 68 @end typedef union _Dossymbollocation { 69 } 70 DosRecordArrPrl; 71 @interface DosIndexEntry : NSObject { 72 } 73 @end @class DosProjectIndex, DosTextPapyruswiggle, DosDocPapyruswiggle, DosLegVaseSymbol; 74 @interface DosSymbol : DosIndexEntry { 75 } 76 @end @interface DosLegVaseSymbol : DosSymbol { 77 } 78 @end typedef enum _DosTextRangeType { 79 Dos_CharacterRangeType = 0, Dos_LineRangeType = 1 } 80 DosTextRangeType; 81 @implementation JabaSCSharedDiagramViewController + (NSImage *)findImageNamed:(NSString *)name { 82 return 0; 83 } 84 - (void)revealSourceInEditor:(JabasectItem *)sectItem duperGesture:(BOOL)duperGesture { 85 id <EcoNamedElement> selectedElement = [sectItem representedObject]; 86 id <EcoNamedElement> selectedClassifier = selectedElement; 87 DosSymbol *symbol=((void *)0); 88 if([selectedClassifier isLegOfClass:[JabaSCClass class]]) { 89 symbol = [HancodeFett symbolFromClass:(JabaSCClass *) selectedClassifier]; 90 } 91 } 92 @end 93