xref: /aosp_15_r20/external/clang/test/SemaObjC/property-9.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
2*67e74705SXin Li
3*67e74705SXin Litypedef signed char BOOL;
4*67e74705SXin Li@protocol NSObject  - (BOOL)isEqual:(id)object; @end
5*67e74705SXin Li
6*67e74705SXin Li@interface NSObject <NSObject> {} @end
7*67e74705SXin Li
8*67e74705SXin Li@interface _NSServicesInContextMenu : NSObject {
9*67e74705SXin Li    id _requestor;
10*67e74705SXin Li    NSObject *_appleEventDescriptor;
11*67e74705SXin Li}
12*67e74705SXin Li
13*67e74705SXin Li@property (retain, nonatomic) id requestor;
14*67e74705SXin Li@property (retain, nonatomic) id appleEventDescriptor;
15*67e74705SXin Li
16*67e74705SXin Li@end
17*67e74705SXin Li
18*67e74705SXin Li@implementation _NSServicesInContextMenu
19*67e74705SXin Li
20*67e74705SXin Li@synthesize requestor = _requestor, appleEventDescriptor = _appleEventDescriptor;
21*67e74705SXin Li
22*67e74705SXin Li@end
23*67e74705SXin Li
24*67e74705SXin Li@class NSString;
25*67e74705SXin Li
26*67e74705SXin Li@protocol MyProtocol
27*67e74705SXin Li- (NSString *)stringValue;
28*67e74705SXin Li@end
29*67e74705SXin Li
30*67e74705SXin Li@interface MyClass : NSObject {
31*67e74705SXin Li  id  _myIvar;
32*67e74705SXin Li}
33*67e74705SXin Li@property (readwrite, retain) id<MyProtocol> myIvar;
34*67e74705SXin Li@end
35*67e74705SXin Li
36*67e74705SXin Li@implementation MyClass
37*67e74705SXin Li@synthesize myIvar = _myIvar;
38*67e74705SXin Li@end
39*67e74705SXin Li
40*67e74705SXin Li
41*67e74705SXin Li@interface BadPropClass
42*67e74705SXin Li{
43*67e74705SXin Li int _awesome;
44*67e74705SXin Li}
45*67e74705SXin Li
46*67e74705SXin Li@property (readonly) int; // expected-warning {{declaration does not declare anything}}
47*67e74705SXin Li@property (readonly) ; // expected-error {{type name requires a specifier or qualifier}}
48*67e74705SXin Li@property (readonly) int : 4; // expected-error {{property requires fields to be named}}
49*67e74705SXin Li
50*67e74705SXin Li
51*67e74705SXin Li// test parser recovery: rdar://6254579
52*67e74705SXin Li@property (                           // expected-note {{to match this '('}}
53*67e74705SXin Li           readonly getter=isAwesome) // expected-error {{expected ')'}}
54*67e74705SXin Li
55*67e74705SXin Li  int _awesome;
56*67e74705SXin Li@property (readonlyx) // expected-error {{unknown property attribute 'readonlyx'}}
57*67e74705SXin Li  int _awesome2;
58*67e74705SXin Li
59*67e74705SXin Li@property (    // expected-note {{to match this '('}}
60*67e74705SXin Li           +)  // expected-error {{expected ')'}}
61*67e74705SXin Li
62*67e74705SXin Li  int _awesome3;
63*67e74705SXin Li
64*67e74705SXin Li@end
65*67e74705SXin Li
66*67e74705SXin Li@protocol PVImageViewProtocol
67*67e74705SXin Li@property int inEyeDropperMode;
68*67e74705SXin Li@end
69*67e74705SXin Li
70*67e74705SXin Li@interface Cls
71*67e74705SXin Li@property int inEyeDropperMode;
72*67e74705SXin Li@end
73*67e74705SXin Li
74*67e74705SXin Li@interface PVAdjustColor @end
75*67e74705SXin Li
76*67e74705SXin Li@implementation PVAdjustColor
77*67e74705SXin Li
78*67e74705SXin Li- xx {
79*67e74705SXin Li  id <PVImageViewProtocol> view;
80*67e74705SXin Li  Cls *c;
81*67e74705SXin Li
82*67e74705SXin Li  c.inEyeDropperMode = 1;
83*67e74705SXin Li  view.inEyeDropperMode = 1;
84*67e74705SXin Li}
85*67e74705SXin Li@end
86*67e74705SXin Li
87*67e74705SXin Li// radar 7427072
88*67e74705SXin Li@interface MyStyleIntf
89*67e74705SXin Li{
90*67e74705SXin Li    int _myStyle;
91*67e74705SXin Li}
92*67e74705SXin Li
93*67e74705SXin Li@property(readonly) int myStyle;
94*67e74705SXin Li
95*67e74705SXin Li- (float)setMyStyle:(int)style;
96*67e74705SXin Li@end
97*67e74705SXin Li
98*67e74705SXin Li// rdar://8774513
99*67e74705SXin Li@class MDAInstance; // expected-note {{forward declaration of class here}}
100*67e74705SXin Li
101*67e74705SXin Li@interface MDATestDocument
102*67e74705SXin Li@property(retain) MDAInstance *instance;
103*67e74705SXin Li@end
104*67e74705SXin Li
105*67e74705SXin Liid f0(MDATestDocument *d) {
106*67e74705SXin Li  return d.instance.path; // expected-error {{property 'path' cannot be found in forward class object 'MDAInstance'}}
107*67e74705SXin Li}
108*67e74705SXin Li
109*67e74705SXin Li// rdar://20469452
110*67e74705SXin Li@interface UIView @end
111*67e74705SXin Li
112*67e74705SXin Li@interface FRFakeBannerView : UIView
113*67e74705SXin Li@end
114*67e74705SXin Li
115*67e74705SXin Li@interface FRAdCollectionViewCell
116*67e74705SXin Li@property (nonatomic, weak, readonly) UIView *bannerView;
117*67e74705SXin Li@end
118*67e74705SXin Li
119*67e74705SXin Li@interface FRAdCollectionViewCell ()
120*67e74705SXin Li
121*67e74705SXin Li@property (nonatomic, weak, readwrite) FRFakeBannerView *bannerView;
122*67e74705SXin Li
123*67e74705SXin Li@end
124