1*67e74705SXin Li// RUN: %clang_cc1 -fsyntax-only -verify %s 2*67e74705SXin Li 3*67e74705SXin Li@protocol P @end 4*67e74705SXin Li@interface I @end 5*67e74705SXin Li 6*67e74705SXin Listruct X { X(); }; 7*67e74705SXin Li 8*67e74705SXin Livoid test1(X x) { 9*67e74705SXin Li void *cft; 10*67e74705SXin Li id oct = (id)cft; 11*67e74705SXin Li 12*67e74705SXin Li Class ccct; 13*67e74705SXin Li ccct = (Class)cft; 14*67e74705SXin Li 15*67e74705SXin Li I* iict = (I*)cft; 16*67e74705SXin Li 17*67e74705SXin Li id<P> qid = (id<P>)cft; 18*67e74705SXin Li 19*67e74705SXin Li I<P> *ip = (I<P>*)cft; 20*67e74705SXin Li 21*67e74705SXin Li (id)x; // expected-error {{cannot convert 'X' to 'id' without a conversion operator}} 22*67e74705SXin Li 23*67e74705SXin Li id *pid = (id*)ccct; 24*67e74705SXin Li 25*67e74705SXin Li id<P> *qpid = (id<P>*)ccct; 26*67e74705SXin Li 27*67e74705SXin Li int **pii; 28*67e74705SXin Li 29*67e74705SXin Li ccct = (Class)pii; 30*67e74705SXin Li 31*67e74705SXin Li qpid = (id<P>*)pii; 32*67e74705SXin Li 33*67e74705SXin Li iict = (I*)pii; 34*67e74705SXin Li 35*67e74705SXin Li pii = (int **)ccct; 36*67e74705SXin Li 37*67e74705SXin Li pii = (int **)qpid; 38*67e74705SXin Li 39*67e74705SXin Li} 40*67e74705SXin Li 41