blob: d5cef78f18f4af7ed99bd6e4dc18d7b741a07ca1 [file] [log] [blame]
Daniel Dunbard7d5f022009-03-24 02:24:46 +00001// RUN: clang-cc -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