|  | // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s | 
|  | // expected-no-diagnostics | 
|  |  | 
|  | typedef const struct __attribute__((objc_bridge(NSAttributedString))) __CFAttributedString *CFAttributedStringRef; | 
|  |  | 
|  | typedef struct __attribute__((objc_bridge_mutable(NSMutableAttributedString))) __CFAttributedString *CFMutableAttributedStringRef; | 
|  |  | 
|  | @interface NSAttributedString | 
|  | @end | 
|  |  | 
|  | @interface NSMutableAttributedString | 
|  | @end | 
|  |  | 
|  | struct __CFAttributedString { | 
|  | }; | 
|  |  | 
|  | void Test1(CFAttributedStringRef attrStr, CFMutableAttributedStringRef mutable_attrStr) | 
|  | { | 
|  | id x = (NSAttributedString *) attrStr; | 
|  | id x1 =(NSAttributedString *) mutable_attrStr; | 
|  | id x2 = (NSMutableAttributedString *) attrStr; | 
|  | id x3 = (NSMutableAttributedString *) mutable_attrStr; | 
|  | } | 
|  |  | 
|  | void Test2(NSAttributedString *ns_attrStr, NSMutableAttributedString *ns_mutable_attr_Str) { | 
|  | CFAttributedStringRef cfsr = (CFAttributedStringRef) ns_attrStr; | 
|  | CFMutableAttributedStringRef cfsr1 = (CFMutableAttributedStringRef) ns_attrStr; | 
|  | CFAttributedStringRef cfsr2 = (CFAttributedStringRef) ns_mutable_attr_Str; | 
|  | CFMutableAttributedStringRef cfsr3 = (CFMutableAttributedStringRef) ns_mutable_attr_Str; | 
|  | } | 
|  |  | 
|  | // Tests with no definition declaration for struct __NDCFAttributedString. | 
|  | typedef const struct __attribute__((objc_bridge(NSAttributedString))) __NDCFAttributedString *NDCFAttributedStringRef; | 
|  |  | 
|  | typedef struct __attribute__((objc_bridge_mutable(NSMutableAttributedString))) __NDCFAttributedString *NDCFMutableAttributedStringRef; | 
|  |  | 
|  | void Test3(NDCFAttributedStringRef attrStr, NDCFMutableAttributedStringRef mutable_attrStr) | 
|  | { | 
|  | id x = (NSAttributedString *) attrStr; | 
|  | id x1 =(NSAttributedString *) mutable_attrStr; | 
|  | id x2 = (NSMutableAttributedString *) attrStr; | 
|  | id x3 = (NSMutableAttributedString *) mutable_attrStr; | 
|  | } | 
|  |  | 
|  | void Test4(NSAttributedString *ns_attrStr, NSMutableAttributedString *ns_mutable_attr_Str) { | 
|  | NDCFAttributedStringRef cfsr = (NDCFAttributedStringRef) ns_attrStr; | 
|  | NDCFMutableAttributedStringRef cfsr1 = (NDCFMutableAttributedStringRef) ns_attrStr; | 
|  | NDCFAttributedStringRef cfsr2 = (NDCFAttributedStringRef) ns_mutable_attr_Str; | 
|  | NDCFMutableAttributedStringRef cfsr3 = (NDCFMutableAttributedStringRef) ns_mutable_attr_Str; | 
|  | } |