| // RUN: %clang_cc1  -fsyntax-only -verify %s | 
 | // rdar://8155806 | 
 |  | 
 | @interface Subclass  | 
 | { | 
 |     int setterOnly; | 
 | } | 
 | - (void) setSetterOnly : (int) arg; | 
 | @end | 
 |  | 
 | int func (int arg, Subclass *x) { | 
 |     if (x.setterOnly) { // expected-error {{no getter method for read from property}} | 
 |       x.setterOnly = 1; | 
 |     } | 
 |     func(x.setterOnly + 1, x); // expected-error {{no getter method for read from property}} | 
 |     int i = x.setterOnly + 1;  // expected-error {{no getter method for read from property}} | 
 |     return x.setterOnly + 1;   // expected-error {{no getter method for read from property}} | 
 | } | 
 |  | 
 | // <rdar://problem/12765391> | 
 |  | 
 | @interface TestClass  | 
 | + (void) setSetterOnly : (int) arg; | 
 | @end | 
 |  | 
 | int func2 (int arg) { | 
 |     if (TestClass.setterOnly) { // expected-error {{no getter method for read from property}} | 
 |       TestClass.setterOnly = 1; | 
 |     } | 
 |     func(TestClass.setterOnly + 1, x); // expected-error {{no getter method for read from property}} \ | 
 |                                        // expected-error {{use of undeclared identifier 'x'}} | 
 |     int i = TestClass.setterOnly + 1;  // expected-error {{no getter method for read from property}} | 
 |     return TestClass.setterOnly + 1;   // expected-error {{no getter method for read from property}} | 
 | } | 
 |  | 
 | @interface Sub : Subclass | 
 | - (int) func3; | 
 | @end | 
 | @implementation Sub | 
 | - (int) func3 { | 
 | 	return super.setterOnly; // expected-error {{no getter method for read from property}} | 
 | } | 
 | @end |