xref: /minix3/external/bsd/llvm/dist/clang/test/SemaObjC/objc-mixed-bridge-attribute.m (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
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