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
 |