Home | History | Annotate | Download | only in SemaObjC
      1 // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
      2 // expected-no-diagnostics
      3 // rdar://17238954
      4 
      5 typedef const struct __attribute__((objc_bridge(NSAttributedString))) __CFAttributedString *CFAttributedStringRef;
      6 
      7 typedef struct __attribute__((objc_bridge_mutable(NSMutableAttributedString))) __CFAttributedString *CFMutableAttributedStringRef;
      8 
      9 @interface NSAttributedString
     10 @end
     11 
     12 @interface NSMutableAttributedString
     13 @end
     14 
     15 struct __CFAttributedString {
     16 };
     17 
     18 void Test1(CFAttributedStringRef attrStr, CFMutableAttributedStringRef mutable_attrStr)
     19 {
     20   id x = (NSAttributedString *) attrStr;
     21   id x1 =(NSAttributedString *) mutable_attrStr;
     22   id x2 = (NSMutableAttributedString *) attrStr;
     23   id x3 = (NSMutableAttributedString *) mutable_attrStr;
     24 }
     25 
     26 void Test2(NSAttributedString *ns_attrStr, NSMutableAttributedString *ns_mutable_attr_Str) {
     27   CFAttributedStringRef cfsr = (CFAttributedStringRef) ns_attrStr;
     28   CFMutableAttributedStringRef cfsr1 = (CFMutableAttributedStringRef) ns_attrStr;
     29   CFAttributedStringRef cfsr2 = (CFAttributedStringRef) ns_mutable_attr_Str;
     30   CFMutableAttributedStringRef cfsr3 = (CFMutableAttributedStringRef) ns_mutable_attr_Str;
     31 }
     32 
     33 // Tests with no definition declaration for struct __NDCFAttributedString.
     34 typedef const struct __attribute__((objc_bridge(NSAttributedString))) __NDCFAttributedString *NDCFAttributedStringRef;
     35 
     36 typedef struct __attribute__((objc_bridge_mutable(NSMutableAttributedString))) __NDCFAttributedString *NDCFMutableAttributedStringRef;
     37 
     38 void Test3(NDCFAttributedStringRef attrStr, NDCFMutableAttributedStringRef mutable_attrStr)
     39 {
     40   id x = (NSAttributedString *) attrStr;
     41   id x1 =(NSAttributedString *) mutable_attrStr;
     42   id x2 = (NSMutableAttributedString *) attrStr;
     43   id x3 = (NSMutableAttributedString *) mutable_attrStr;
     44 }
     45 
     46 void Test4(NSAttributedString *ns_attrStr, NSMutableAttributedString *ns_mutable_attr_Str) {
     47   NDCFAttributedStringRef cfsr = (NDCFAttributedStringRef) ns_attrStr;
     48   NDCFMutableAttributedStringRef cfsr1 = (NDCFMutableAttributedStringRef) ns_attrStr;
     49   NDCFAttributedStringRef cfsr2 = (NDCFAttributedStringRef) ns_mutable_attr_Str;
     50   NDCFMutableAttributedStringRef cfsr3 = (NDCFMutableAttributedStringRef) ns_mutable_attr_Str;
     51 }
     52