// RUN: %clang_cc1 -fsyntax-only -verify -triple i686-apple-darwin9 -Wno-objc-root-class %s // expected-no-diagnostics // FIXME: must also compile as Objective-C++ // typedef struct objc_selector *SEL; typedef signed char BOOL; typedef unsigned int NSUInteger; typedef struct _NSZone NSZone; @class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator; @protocol NSObject - (BOOL)isEqual:(id)object; - (BOOL)respondsToSelector:(SEL)aSelector; @end @protocol NSCopying - (id)copyWithZone:(NSZone *)zone; @end @protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone; @end @protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder; @end @interface NSObject {} @end @class NSString, NSData; typedef struct _NSPoint {} NSRange; @interface NSString : NSObject - (NSUInteger)length; @end @interface NSMutableString : NSString - (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString; @end @class NSArray, NSDictionary, NSMapTable; @interface NSResponder : NSObject {} @end @protocol NSAnimatablePropertyContainer - (id)animator; @end extern NSString *NSAnimationTriggerOrderIn ; @interface NSView : NSResponder { struct __VFlags2 {} _vFlags2; } @end @class NSAttributedString, NSEvent, NSFont, NSFormatter, NSImage, NSMenu, NSText, NSView; @interface FooiagramView : NSView { id _delegate; } @end @class FooiagramView; @interface _FooiagramViewReserved : NSObject { @public NSMutableString *_typeToSelectString; struct _FooiagramViewFlags { unsigned int delegateRespondsToPrintInfoForBarView : 1; } _dvFlags; } @end extern _FooiagramViewReserved *_FooiagramViewBarViewReserved(FooiagramView *BarView); @interface FooiagramView (FooiagramViewPrivate) + (Class)_defaultBarToolManagerClass; @end @implementation FooiagramView static NSMapTable *_defaultMenuForClass = 0; - (void)setDelegate:(id)delegate { if (_delegate != delegate) { struct _FooiagramViewFlags *dvFlags = &_FooiagramViewBarViewReserved(self)->_dvFlags; if (_delegate != ((void *)0)) { dvFlags->delegateRespondsToPrintInfoForBarView = [_delegate respondsToSelector:@selector(printInfoForBarView:)]; } } } @end // @interface WizKing_MIKeep { struct __LoreStuffNode *_historyStuff; } @end typedef struct __LoreStuffNode {} LoreStuffNode; @implementation WizKing_MIKeep - init { LoreStuffNode *node; node = &(_historyStuff[1]); return 0; } @end // typedef long unsigned int __darwin_size_t; typedef __darwin_size_t size_t; void *memset(void *, int, size_t); @class NSString, NSURL, NSError; @interface OingoWerdnaPeon : NSObject {} @end typedef enum { OingoPT_SmashOK, OingoPT_NoSuchFile, } OingoWerdnaPeonIOMethod; @interface OingoWerdnaPeonSmashDrivel : NSObject {} @end @interface OingoBoingoContraptionPeon : OingoWerdnaPeon { struct _OingoBoingoContraptionPeonFlags {} _nfttFlags; } @end @implementation OingoBoingoContraptionPeon + (void)initialize {} - (id)initWithSmashDrivel:(OingoWerdnaPeonSmashDrivel *)info { if (self != ((void *)0)) { (void)memset(&_nfttFlags, 0, sizeof(struct _OingoBoingoContraptionPeonFlags)); } return 0; } @end @interface Blah { struct X { int x; } value; } @end @implementation Blah - (int)getValue { struct X *xp = &value; return xp->x; } @end