// RUN: clang-cc -fsyntax-only -verify -fblocks %s @protocol NSObject; void bar(id(^)(void)); void foo(id (^objectCreationBlock)(void)) { return bar(objectCreationBlock); } void bar2(id(*)(void)); void foo2(id (*objectCreationBlock)(void)) { return bar2(objectCreationBlock); } void bar3(id(*)()); void foo3(id (*objectCreationBlock)(int)) { return bar3(objectCreationBlock); } void bar4(id(^)()); void foo4(id (^objectCreationBlock)(int)) { return bar4(objectCreationBlock); } void bar5(id(^)(void)); void foo5(id (^objectCreationBlock)(int)) { return bar5(objectCreationBlock); // expected-warning{{incompatible block pointer types passing 'id (^)(int)', expected 'id (^)(void)'}} } void bar6(id(^)(int)); void foo6(id (^objectCreationBlock)()) { return bar6(objectCreationBlock); // expected-warning{{incompatible block pointer types passing 'id (^)()', expected 'id (^)(int)'}} } void foo67(id (^x)(int)) { if (x) { } }