Home | History | Annotate | Download | only in Rewriter
      1 // RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
      2 // RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
      3 // rdar://11202764
      4 
      5 typedef void(^BL)(void);
      6 
      7 id return_id(void(^block)(void)) {
      8   return block;
      9 }
     10 
     11 BL return_block(id obj) {
     12   return obj;
     13 }
     14 
     15 int main()
     16 {
     17     void(^block)(void);
     18     id obj;
     19     block = obj; // AnyPointerToBlockPointerCast
     20     obj = block; // BlockPointerToObjCPointerCast
     21 
     22    id obj1 = block;
     23 
     24    void(^block1)(void) = obj1;
     25 
     26    return_id(block1);
     27 
     28    return_id(obj1);
     29 
     30    return_block(block1);
     31 
     32    return_block(obj1);
     33 }
     34