// RUN: %clang_cc1 -fsyntax-only -verify -fblocks -Wno-objc-root-class %s
// RUN: %clang_cc1 -fsyntax-only -verify -fblocks -Wno-objc-root-class \
// RUN: -fcompatibility-qualified-id-block-type-checking -DCOMPATIBILITY_QUALIFIED_ID_TYPE_CHECKING=1 %s
// test for block type safety.
void
void
void
void
@protocol NSObject;
@class NSObject;
void
void
void
void
void
@protocol P, P2;
void
void
// rdar : //8302845
int
// rdar:// 9118343
int
// In Apple SDK APIs using NSItemProviderCompletionHandler require to work with
// blocks that have parameters more specific than in method signatures. As
// explained in non-compatibility test above, it is not safe in general. But
// to keep existing code working we support a compatibility mode that uses
// previous type checking.
int
// rdar://10798770
typedef int NSInteger;
typedef enum : NSInteger NSComparisonResult;
typedef NSComparisonResult ;
void
// rdar://16739120
void
void
void
// rdar://problem/19420731
typedef NSObject<P1> NSObject_P1;
typedef NSObject_P1<P2> NSObject_P1_P2;
void