45 lines
		
	
	
		
			774 B
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			774 B
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
// 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
 |