@interface Foo {
@public
id __unsafe_unretained x;
id __weak y;
id __autoreleasing z; }
@property(strong) id x;
@property(strong) id y;
@property(strong) id z;
@end
@interface Bar {
@public
id __unsafe_unretained x;
id __weak y;
id __autoreleasing z; }
@property(retain) id x;
@property(retain) id y;
@property(retain) id z;
@end
@interface Bas {
@public
id __unsafe_unretained x;
id __weak y;
id __autoreleasing z; }
@property(copy) id x;
@property(copy) id y;
@property(copy) id z;
@end
@interface Bat
@property(strong) __unsafe_unretained id x; @property(strong) __weak id y; @property(strong) __autoreleasing id z; @end
@interface Bau
@property(retain) __unsafe_unretained id x; @property(retain) __weak id y; @property(retain) __autoreleasing id z; @end
@interface Bav
@property(copy) __unsafe_unretained id x; @property(copy) __weak id y; @property(copy) __autoreleasing id z; @end
@interface Bingo
@property(assign) __unsafe_unretained id x;
@property(assign) __weak id y; @property(assign) __autoreleasing id z; @end
@interface Batman
@property(unsafe_unretained) __unsafe_unretained id x;
@property(unsafe_unretained) __weak id y; @property(unsafe_unretained) __autoreleasing id z; @end
@interface Super
@property (readonly, retain) id foo;
@property (readonly, weak) id fee;
@property (readonly, strong) id frr;
@end
@interface Bugg : Super
@property (readwrite) id foo;
@property (readwrite) id fee;
@property (readwrite) id frr;
@end
@interface NSObject @end
#pragma clang assume_nonnull begin
@interface I: NSObject
@property(nonatomic, weak) id delegate; @property(nonatomic, weak, readonly) id ROdelegate; @property(nonatomic, weak, nonnull) id NonNulldelete; @property(nonatomic, weak, nullable) id Nullabledelete;
@property(nonatomic, strong) id stdelegate; @property(nonatomic, readonly) id stROdelegate; @property(nonatomic, strong, nonnull) id stNonNulldelete; @property(nonatomic, nullable) id stNullabledelete; @end
#pragma clang assume_nonnull end
@interface J: NSObject
@property(nonatomic, weak) id ddd; @property(nonatomic, weak, nonnull) id delegate; @property(nonatomic, weak, nonnull, readonly) id ROdelegate; @end
@protocol P
@property(readonly, retain) id prop;
@end
__attribute__((objc_root_class))
@interface I2<P>
@end
@interface I2()
@property (readwrite) id prop;
@end
@implementation I2
@synthesize prop;
@end
@protocol CopyVsAssign1
@property (copy, nonatomic, readonly) id prop; @end
@protocol CopyVsAssign2
@property (assign, nonatomic, readonly) id prop; @end
@interface CopyVsAssign: Foo <CopyVsAssign1, CopyVsAssign2>
@end
@implementation CopyVsAssign
@synthesize prop; @end
@protocol RetainVsNonRetain1
@property (readonly) id prop; @end
@protocol RetainVsNonRetain2
@property (retain, readonly) id prop; @end
@interface RetainVsNonRetain: Foo <RetainVsNonRetain1, RetainVsNonRetain2>
@end
@implementation RetainVsNonRetain
@synthesize prop; @end
@protocol AtomicVsNonatomic1
@property (copy, nonatomic, readonly) id prop; @end
@protocol AtomicVsNonatomic2
@property (copy, atomic, readonly) id prop; @end
@interface AtomicVsNonAtomic: Foo <AtomicVsNonatomic1, AtomicVsNonatomic2>
@end
@implementation AtomicVsNonAtomic
@synthesize prop; @end
@protocol Getter1
@property (copy, readonly) id prop; @end
@protocol Getter2
@property (copy, getter=x, readonly) id prop; @end
@interface GetterVsGetter: Foo <Getter1, Getter2>
@end
@implementation GetterVsGetter
@synthesize prop; @end
@protocol Setter1
@property (copy, readonly) id prop;
@end
@protocol Setter2
@property (copy, setter=setp:, readwrite) id prop; @end
@protocol Setter3
@property (copy, readwrite) id prop; @end
@interface SetterVsSetter: Foo <Setter1, Setter2, Setter3>
@end
@implementation SetterVsSetter
@synthesize prop; @end
@protocol TypeVsAttribute1
@property (assign, atomic, readonly) int prop; @end
@protocol TypeVsAttribute2
@property (assign, atomic, readonly) id prop; @end
@protocol TypeVsAttribute3
@property (copy, readonly) id prop; @end
@interface TypeVsAttribute: Foo <TypeVsAttribute1, TypeVsAttribute2, TypeVsAttribute3>
@end
@implementation TypeVsAttribute
@synthesize prop; @end
@protocol TypeVsSetter1
@property (assign, nonatomic, readonly) int prop; @end
@protocol TypeVsSetter2
@property (assign, nonatomic, readonly) id prop; @end
@protocol TypeVsSetter3
@property (assign, nonatomic, readwrite) id prop; @end
@interface TypeVsSetter: Foo <TypeVsSetter1, TypeVsSetter2, TypeVsSetter3>
@end
@implementation TypeVsSetter
@synthesize prop; @end
@protocol AutoStrongProp
@property (nonatomic, readonly) NSObject *prop;
@end
@protocol AutoStrongProp_Internal <AutoStrongProp>
@property (nonatomic, readwrite) NSObject *prop;
@end
@interface SynthesizeWithImplicitStrongNoError : NSObject <AutoStrongProp>
@end
@interface SynthesizeWithImplicitStrongNoError () <AutoStrongProp_Internal>
@end
@implementation SynthesizeWithImplicitStrongNoError
@synthesize prop = _prop;
@end
@protocol StrongCollision
@property(strong) NSObject *p;
@property(copy) NSObject *p2;
@property(strong, readwrite) NSObject *collision;
@end
@protocol ReadonlyCollision
@property(readonly) NSObject *p;
@property(readonly) NSObject *p2;
@property(readonly, weak) NSObject *collision;
@end
@interface StrongReadonlyCollision : NSObject <StrongCollision, ReadonlyCollision>
@end
@implementation StrongReadonlyCollision
@synthesize p = _p;
@synthesize p2 = _p2;
@synthesize collision = _collision;
@end
id i1, __weak i2, i3;