xref: /llvm-project/clang/test/SemaObjCXX/cstyle-cast.mm (revision 909acf8209694495ba0dccd5d901c257729c5454)
18fbe78f6SDaniel Dunbar// RUN: %clang_cc1 -fsyntax-only -verify %s
21c548021SFariborz Jahanian
31c548021SFariborz Jahanian@protocol P @end
41c548021SFariborz Jahanian@interface I @end
51c548021SFariborz Jahanian
6859c4155SFariborz Jahanianstruct X { X(); };
7859c4155SFariborz Jahanian
8859c4155SFariborz Jahanianvoid test1(X x) {
91c548021SFariborz Jahanian  void *cft;
101c548021SFariborz Jahanian  id oct = (id)cft;
111c548021SFariborz Jahanian
121c548021SFariborz Jahanian  Class ccct;
131c548021SFariborz Jahanian  ccct = (Class)cft;
141c548021SFariborz Jahanian
151c548021SFariborz Jahanian  I* iict = (I*)cft;
161c548021SFariborz Jahanian
17859c4155SFariborz Jahanian  id<P> qid = (id<P>)cft;
181c548021SFariborz Jahanian
191c548021SFariborz Jahanian  I<P> *ip = (I<P>*)cft;
201c548021SFariborz Jahanian
21*909acf82SJohn McCall  (id)x; // expected-error {{cannot convert 'X' to 'id' without a conversion operator}}
22859c4155SFariborz Jahanian
23859c4155SFariborz Jahanian  id *pid = (id*)ccct;
24859c4155SFariborz Jahanian
25859c4155SFariborz Jahanian  id<P> *qpid = (id<P>*)ccct;
26859c4155SFariborz Jahanian
27859c4155SFariborz Jahanian  int **pii;
28859c4155SFariborz Jahanian
29859c4155SFariborz Jahanian  ccct = (Class)pii;
30859c4155SFariborz Jahanian
31859c4155SFariborz Jahanian  qpid = (id<P>*)pii;
32859c4155SFariborz Jahanian
33859c4155SFariborz Jahanian  iict = (I*)pii;
34859c4155SFariborz Jahanian
35859c4155SFariborz Jahanian  pii = (int **)ccct;
36859c4155SFariborz Jahanian
37859c4155SFariborz Jahanian  pii = (int **)qpid;
38859c4155SFariborz Jahanian
391c548021SFariborz Jahanian}
401c548021SFariborz Jahanian
41