// RUN: %clang_cc1  -fsyntax-only -verify -Wno-objc-root-class %s

@interface Foo  {
@private
    int _foo;
    int _foo2;
}
@property (readwrite, nonatomic) int foo, foo1, foo2, foo3;
@property (readwrite, nonatomic) int PROP;
@end

@implementation Foo

@synthesize foo = _foo;
@synthesize foo1;

- (void)setFoo:(int)value {
    _foo = foo; // expected-error {{use of undeclared identifier 'foo'}}
}

- (void)setFoo1:(int)value {
    _foo = foo1; // OK
}

- (void)setFoo2:(int)value {
    _foo = foo2; // expected-error {{use of undeclared identifier 'foo2'}}
}

- (void)setFoo3:(int)value {
    _foo = foo3;	// OK
}

@synthesize foo2 = _foo2;
@synthesize foo3;

@synthesize PROP=PROP;
- (void)setPROP:(int)value {
    PROP = value;        // OK
}

@end

