85 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
| // RUN: %clang_cc1 -fsyntax-only -verify %s
 | |
| 
 | |
| typedef signed char BOOL;
 | |
| typedef unsigned int NSUInteger;
 | |
| typedef struct _NSZone NSZone;
 | |
| @class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
 | |
| @protocol NSObject
 | |
| - (BOOL)isEqual:(id)object;
 | |
| @end
 | |
| @protocol NSCopying  - (id)copyWithZone:(NSZone *)zone;
 | |
| @end
 | |
| @protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone;
 | |
| @end
 | |
| @protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder;
 | |
| @end
 | |
| @interface NSObject <NSObject> {}
 | |
| @end
 | |
| extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
 | |
| typedef struct {
 | |
|   id *itemsPtr;
 | |
|   unsigned long *mutationsPtr;
 | |
| } NSFastEnumerationState;
 | |
| @protocol NSFastEnumeration
 | |
| - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
 | |
| @end
 | |
| @class NSString;
 | |
| @interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>  - (NSUInteger)count;
 | |
| @end
 | |
| @interface NSMutableArray : NSArray  - (void)addObject:(id)anObject;
 | |
| @end
 | |
| extern NSString * const NSUndoManagerCheckpointNotification;
 | |
| @interface NSValueTransformer : NSObject {} @end
 | |
| @class FooModel;
 | |
| @interface FooObject : NSObject <NSCopying> {}
 | |
| @end
 | |
| @interface FooNode : FooObject {}
 | |
| - (NSArray *) children;
 | |
| @end
 | |
| typedef enum { Foo_HUH_NONE } FooHUHCode;
 | |
| @interface FooPlaypenEntry : FooNode {
 | |
|   NSMutableArray *_interestingChildren;
 | |
|   FooHUHCode _HUH;
 | |
|   __attribute__((objc_gc(weak))) FooPlaypenEntry *_mostInterestingChild;
 | |
|   id _author;
 | |
| }
 | |
| @property(copy) NSString *author;
 | |
| - (BOOL) isInteresting;
 | |
| @end  NSString *FooHUHCodeToString(FooHUHCode HUH) { return 0; }
 | |
| @interface FooHUHCodeToStringTransformer: NSValueTransformer {
 | |
| }
 | |
| @end  @implementation FooPlaypenEntry  @synthesize author = _author;
 | |
| - (BOOL) isInteresting { return 1; }
 | |
| - (NSArray *) interestingChildren {
 | |
|   if (!_interestingChildren) {
 | |
|     for (FooPlaypenEntry *child in [self children]) {
 | |
|       if ([child isInteresting]) {
 | |
|         if (!_mostInterestingChild)
 | |
|           _mostInterestingChild = child;
 | |
|         else if (child->_HUH > _mostInterestingChild->_HUH) 
 | |
|           _mostInterestingChild = child;
 | |
|       }
 | |
|     }
 | |
|   }
 | |
|   return 0;
 | |
| }
 | |
| - (FooHUHCode) HUH {
 | |
|   if (_HUH == Foo_HUH_NONE) {
 | |
|     if (_mostInterestingChild)
 | |
|       return [_mostInterestingChild HUH];
 | |
|   }
 | |
|   return 0;
 | |
| }
 | |
| @end
 | |
| 
 | |
| // rdar://problem/9123040
 | |
| @interface Test1 {
 | |
| @public
 | |
|   id ivar __attribute__((objc_gc(weak)));
 | |
| }
 | |
| @property (assign) id prop __attribute((objc_gc(weak)));
 | |
| @end
 | |
| void test1(Test1 *t) {
 | |
|   id *(__attribute__((objc_gc(strong))) x) = &t->ivar; // expected-warning {{initializing '__strong id *' with an expression of type '__weak id *' discards qualifiers}}
 | |
| }
 |