blob: fc8c48c4f6cf2fde44c6899249439788ff7dd9b9 [file] [log] [blame]
Daniel Dunbara5728872009-12-15 20:14:24 +00001// RUN: %clang_cc1 -fsyntax-only -verify %s
Fariborz Jahanianb7611f22008-11-22 18:40:47 +00002
3@interface A
4 -(int) x;
5@property (readonly) int x;
6@property int ok;
7@end
8
Fariborz Jahanianba8d2d62008-11-22 20:25:50 +00009@interface B
10 -(void) setOk:(int)arg;
11 -(int) x;
12 -(int) ok;
13@end
14
15void f0(A *a, B* b) {
Fariborz Jahanianb7611f22008-11-22 18:40:47 +000016 a.x = 10; // expected-error {{assigning to property with 'readonly' attribute not allowed}}
17 a.ok = 20;
Fariborz Jahanianba8d2d62008-11-22 20:25:50 +000018 b.x = 10; // expected-error {{setter method is needed to assign to object using property assignment syntax}}
19 b.ok = 20;
Fariborz Jahanianb7611f22008-11-22 18:40:47 +000020}
21
Fariborz Jahanianc3f48cd2009-09-14 16:40:48 +000022typedef 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 {{setter method is needed to assign to object using property assignment syntax}}
43}
44@end