xref: /llvm-project/clang/test/Analysis/inlining/InlineObjCInstanceMethod.h (revision d4e65373f3c562eb59dccfaa4910eef95d09eeee)
163282aefSAnna Zaks 
263282aefSAnna Zaks // Define a public header for the ObjC methods that are "visible" externally
363282aefSAnna Zaks // and, thus, could be sub-classed. We should explore the path on which these
463282aefSAnna Zaks // are sub-classed with unknown class by not inlining them.
563282aefSAnna Zaks 
663282aefSAnna Zaks typedef signed char BOOL;
763282aefSAnna Zaks typedef struct objc_class *Class;
863282aefSAnna Zaks typedef struct objc_object {
963282aefSAnna Zaks     Class isa;
1063282aefSAnna Zaks } *id;
1163282aefSAnna Zaks @protocol NSObject  - (BOOL)isEqual:(id)object; @end
1263282aefSAnna Zaks @interface NSObject <NSObject> {}
1363282aefSAnna Zaks +(id)alloc;
1475f49a9cSAnna Zaks +(id)new;
1563282aefSAnna Zaks -(id)init;
1663282aefSAnna Zaks -(id)autorelease;
1763282aefSAnna Zaks -(id)copy;
1863282aefSAnna Zaks - (Class)class;
1963282aefSAnna Zaks -(id)retain;
2063282aefSAnna Zaks @end
21920af014SAnna Zaks 
22*d4e65373SAnna Zaks @interface PublicClass : NSObject {
23*d4e65373SAnna Zaks   int value3;
24*d4e65373SAnna Zaks }
25920af014SAnna Zaks - (int)getZeroPublic;
26*d4e65373SAnna Zaks 
27*d4e65373SAnna Zaks - (int) value2;
28*d4e65373SAnna Zaks 
29*d4e65373SAnna Zaks @property (readonly) int value1;
30*d4e65373SAnna Zaks 
31*d4e65373SAnna Zaks @property int value3;
32*d4e65373SAnna Zaks - (int)value3;
33*d4e65373SAnna Zaks - (void)setValue3:(int)newValue;
34920af014SAnna Zaks @end
35920af014SAnna Zaks 
36920af014SAnna Zaks @interface PublicSubClass : PublicClass
37920af014SAnna Zaks @end
3875f49a9cSAnna Zaks 
3975f49a9cSAnna Zaks @interface PublicParent : NSObject
4075f49a9cSAnna Zaks - (int)getZeroOverridden;
4175f49a9cSAnna Zaks @end
4275f49a9cSAnna Zaks 
4375f49a9cSAnna Zaks @interface PublicSubClass2 : PublicParent
4475f49a9cSAnna Zaks - (int) getZeroOverridden;
4575f49a9cSAnna Zaks @end
4675f49a9cSAnna Zaks 
47