1*67e74705SXin Li// RUN: %clang_cc1 -fsyntax-only -verify %s 2*67e74705SXin Li 3*67e74705SXin Li@interface A 4*67e74705SXin Li -(int) x; 5*67e74705SXin Li@property (readonly) int x; 6*67e74705SXin Li@property int ok; 7*67e74705SXin Li@end 8*67e74705SXin Li 9*67e74705SXin Li@interface B 10*67e74705SXin Li -(void) setOk:(int)arg; 11*67e74705SXin Li -(int) x; 12*67e74705SXin Li -(int) ok; 13*67e74705SXin Li@end 14*67e74705SXin Li 15*67e74705SXin Livoid f0(A *a, B* b) { 16*67e74705SXin Li a.x = 10; // expected-error {{assignment to readonly property}} 17*67e74705SXin Li a.ok = 20; 18*67e74705SXin Li b.x = 10; // expected-error {{no setter method 'setX:' for assignment to property}} 19*67e74705SXin Li b.ok = 20; 20*67e74705SXin Li} 21*67e74705SXin Li 22*67e74705SXin Litypedef struct { 23*67e74705SXin Li int i1, i2; 24*67e74705SXin Li} NSRect; 25*67e74705SXin Li 26*67e74705SXin LiNSRect NSMakeRect(); 27*67e74705SXin Li 28*67e74705SXin Li@interface NSWindow 29*67e74705SXin Li{ 30*67e74705SXin Li NSRect _frame; 31*67e74705SXin Li} 32*67e74705SXin Li- (NSRect)frame; 33*67e74705SXin Li@end 34*67e74705SXin Li 35*67e74705SXin Li@interface NSWindow (Category) 36*67e74705SXin Li-(void)methodToMakeClangCrash; 37*67e74705SXin Li@end 38*67e74705SXin Li 39*67e74705SXin Li@implementation NSWindow (Category) 40*67e74705SXin Li-(void)methodToMakeClangCrash 41*67e74705SXin Li{ 42*67e74705SXin Li self.frame = NSMakeRect(); // expected-error {{no setter method 'setFrame:' for assignment to property}} 43*67e74705SXin Li} 44*67e74705SXin Li@end 45