|  | // 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++ | 
|  |  | 
|  | // <rdar://problem/6487662> | 
|  | 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 <NSObject> {} | 
|  | @end | 
|  | @class NSString, NSData; | 
|  | typedef struct _NSPoint {} | 
|  | NSRange; | 
|  | @interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding> | 
|  | - (NSUInteger)length; | 
|  | @end | 
|  | @interface NSMutableString : NSString | 
|  | - (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString; | 
|  | @end | 
|  | @class NSArray, NSDictionary, NSMapTable; | 
|  | @interface NSResponder : NSObject <NSCoding> {} | 
|  | @end | 
|  | @protocol NSAnimatablePropertyContainer | 
|  | - (id)animator; | 
|  | @end | 
|  | extern NSString *NSAnimationTriggerOrderIn ; | 
|  | @interface NSView : NSResponder  <NSAnimatablePropertyContainer>  { | 
|  | 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 | 
|  |  | 
|  | // <rdar://problem/6487684> | 
|  | @interface WizKing_MIKeep { | 
|  | struct __LoreStuffNode *_historyStuff; | 
|  | } | 
|  | @end | 
|  | typedef struct __LoreStuffNode {} LoreStuffNode; | 
|  | @implementation WizKing_MIKeep | 
|  | - init { | 
|  | LoreStuffNode *node; | 
|  | node = &(_historyStuff[1]); | 
|  | return 0; | 
|  | } | 
|  | @end | 
|  |  | 
|  | // <rdar://problem/6487702> | 
|  | 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 <NSCopying> {} | 
|  | @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 |