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}}
|
|
}
|