blob: c4b176c975ee2078b54e1aee08c3592930a7e98e [file] [log] [blame]
Daniel Dunbara5728872009-12-15 20:14:24 +00001// RUN: %clang_cc1 -fsyntax-only -verify %s
Fariborz Jahanianebea3072009-12-08 19:22:33 +00002
3@protocol P @end
4@interface I @end
5
Fariborz Jahanian92ef5d72009-12-08 23:09:15 +00006struct X { X(); };
7
8void test1(X x) {
Fariborz Jahanianebea3072009-12-08 19:22:33 +00009 void *cft;
10 id oct = (id)cft;
11
12 Class ccct;
13 ccct = (Class)cft;
14
15 I* iict = (I*)cft;
16
Fariborz Jahanian92ef5d72009-12-08 23:09:15 +000017 id<P> qid = (id<P>)cft;
Fariborz Jahanianebea3072009-12-08 19:22:33 +000018
19 I<P> *ip = (I<P>*)cft;
Fariborz Jahanian92ef5d72009-12-08 23:09:15 +000020
John McCall7c2342d2010-03-10 11:27:22 +000021 (id)x; // expected-error {{C-style cast from 'X' to 'id' is not allowed}}
Fariborz Jahanian92ef5d72009-12-08 23:09:15 +000022
23 id *pid = (id*)ccct;
24
25 id<P> *qpid = (id<P>*)ccct;
26
27 int **pii;
28
29 ccct = (Class)pii;
30
31 qpid = (id<P>*)pii;
32
33 iict = (I*)pii;
34
35 pii = (int **)ccct;
36
37 pii = (int **)qpid;
Fariborz Jahanianebea3072009-12-08 19:22:33 +000038
39}
40