// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -verify -fblocks -Wno-objc-root-class %s
// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fsyntax-only -verify -fblocks -Wno-objc-root-class %s
// expected-no-diagnostics

// rdar://16808765

@interface NSObject 
+ (void)clsMethod:(int*)arg;
@end

@class NSDictionary;
@class NSError;

@interface Foo : NSObject
- (void)getDonuts:(void (^)(NSDictionary *, NSError *))replyBlock;
- (void)getCake:(int*)arg, ...;
@end

@protocol Protocol
@required
- (void)getDonuts:(void (^)(NSDictionary *))replyBlock;
- (void)getCake:(float*)arg, ...;
+ (void)clsMethod:(float*)arg;
@end

@implementation Foo
{
  float g;
}

- (void)getDonuts:(void (^)(NSDictionary *, NSError *))replyBlock {
    [(id) 0 getDonuts:^(NSDictionary *replyDict) { }];
}

- (void) getCake:(int*)arg, ... {
    [(id)0 getCake: &g, 1,3.14];
}
@end

void func( Class c, float g ) {
    [c clsMethod: &g];
}

// rdar://18095772
@protocol NSKeyedArchiverDelegate @end

@interface NSKeyedArchiver
@property (assign) id <NSKeyedArchiverDelegate> delegate;
@end

@interface NSConnection
@property (assign) id delegate;
@end

extern id NSApp;

@interface AppDelegate
@end

AppDelegate* GetDelegate()
{
    return [NSApp delegate];
}
