// RUN: %clang_cc1 -fsyntax-only -verify %s @interface A -(int) x; @property (readonly) int x; @property int ok; @end @interface B -(void) setOk:(int)arg; -(int) x; -(int) ok; @end void f0(A *a, B* b) { a.x = 10; // expected-error {{assigning to property with 'readonly' attribute not allowed}} a.ok = 20; b.x = 10; // expected-error {{setter method is needed to assign to object using property assignment syntax}} b.ok = 20; } typedef struct { int i1, i2; } NSRect; NSRect NSMakeRect(); @interface NSWindow { NSRect _frame; } - (NSRect)frame; @end @interface NSWindow (Category) -(void)methodToMakeClangCrash; @end @implementation NSWindow (Category) -(void)methodToMakeClangCrash { self.frame = NSMakeRect(); // expected-error {{setter method is needed to assign to object using property assignment syntax}} } @end