// 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 {{assignment to readonly property}} a.ok = 20; b.x = 10; // expected-error {{no setter method 'setX:' for assignment to property}} 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 {{no setter method 'setFrame:' for assignment to property}} } @end