xref: /aosp_15_r20/external/clang/test/SemaObjC/provisional-ivar-lookup.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1  -fsyntax-only -verify -Wno-objc-root-class %s
2*67e74705SXin Li
3*67e74705SXin Li// rdar:// 8565343
4*67e74705SXin Li@interface Foo  {
5*67e74705SXin Li@private
6*67e74705SXin Li    int _foo;
7*67e74705SXin Li    int _foo2;
8*67e74705SXin Li}
9*67e74705SXin Li@property (readwrite, nonatomic) int foo, foo1, foo2, foo3;
10*67e74705SXin Li@property (readwrite, nonatomic) int PROP;
11*67e74705SXin Li@end
12*67e74705SXin Li
13*67e74705SXin Li@implementation Foo
14*67e74705SXin Li
15*67e74705SXin Li@synthesize foo = _foo;
16*67e74705SXin Li@synthesize foo1;
17*67e74705SXin Li
18*67e74705SXin Li- (void)setFoo:(int)value {
19*67e74705SXin Li    _foo = foo; // expected-error {{use of undeclared identifier 'foo'}}
20*67e74705SXin Li}
21*67e74705SXin Li
22*67e74705SXin Li- (void)setFoo1:(int)value {
23*67e74705SXin Li    _foo = foo1; // OK
24*67e74705SXin Li}
25*67e74705SXin Li
26*67e74705SXin Li- (void)setFoo2:(int)value {
27*67e74705SXin Li    _foo = foo2; // expected-error {{use of undeclared identifier 'foo2'}}
28*67e74705SXin Li}
29*67e74705SXin Li
30*67e74705SXin Li- (void)setFoo3:(int)value {
31*67e74705SXin Li    _foo = foo3;	// OK
32*67e74705SXin Li}
33*67e74705SXin Li
34*67e74705SXin Li@synthesize foo2 = _foo2;
35*67e74705SXin Li@synthesize foo3;
36*67e74705SXin Li
37*67e74705SXin Li@synthesize PROP=PROP;
38*67e74705SXin Li- (void)setPROP:(int)value {
39*67e74705SXin Li    PROP = value;        // OK
40*67e74705SXin Li}
41*67e74705SXin Li
42*67e74705SXin Li@end
43*67e74705SXin Li
44