|  | // 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 |