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