| // RUN: %clang_cc1 -fsyntax-only -verify %s | 
 | // expected-no-diagnostics | 
 | typedef signed char BOOL; | 
 |  | 
 | @protocol NSObject | 
 | + alloc; | 
 | - init; | 
 | - (BOOL) isEqual:(id) object; | 
 | - (Class)class; | 
 | @end | 
 |  | 
 | @interface NSObject < NSObject > {} @end | 
 |  | 
 | @class NSString, NSPort; | 
 |  | 
 | @interface NSPortNameServer:NSObject | 
 | + (NSPortNameServer *) systemDefaultPortNameServer; | 
 | @end | 
 |  | 
 | @interface NSMachBootstrapServer:NSPortNameServer + (id) sharedInstance; @end | 
 |  | 
 | enum { | 
 |   NSWindowsNTOperatingSystem = 1, NSWindows95OperatingSystem, NSSolarisOperatingSystem, NSHPUXOperatingSystem, NSMACHOperatingSystem, NSSunOSOperatingSystem, NSOSF1OperatingSystem | 
 | }; | 
 |  | 
 | @interface NSRunLoop:NSObject {} @end | 
 |  | 
 | @interface NSRunLoop(NSRunLoopConveniences) | 
 | - (void) run; | 
 | @end | 
 |  | 
 | extern NSString *const NSWillBecomeMultiThreadedNotification; | 
 |  | 
 | @interface SenTestTool:NSObject {} | 
 | @end | 
 |  | 
 | @implementation SenTestTool | 
 | + (void) initialize {} | 
 | +(SenTestTool *) sharedInstance { return 0; } | 
 | -(int) run { return 0; } | 
 | +(int) run { | 
 |   return[[self sharedInstance] run]; | 
 | } | 
 | @end | 
 |  | 
 | @interface XX : NSObject | 
 |  | 
 | + classMethod; | 
 |  | 
 | @end | 
 |  | 
 | @interface YY : NSObject | 
 | - whatever; | 
 | @end | 
 |  | 
 | @implementation YY  | 
 |  | 
 | - whatever { | 
 |   id obj = [[XX alloc] init]; | 
 |   [[obj class] classMethod]; | 
 |   return 0; | 
 | } | 
 |  | 
 | @end |