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