expand: Fix up expansion of VIEW_CONVERT_EXPR to BITINT_TYPE [PR117354]
[official-gcc.git] / gcc / testsuite / g++.dg / torture / pr58252.C
blob0e5529d5b37fcadab9244356e88d5bec1953f37f
1 // { dg-do compile }
2 // { dg-options "-fpermissive -Wno-return-type" }
3 typedef long unsigned int size_t;
4        typedef bool _CORBA_Boolean;
5          typedef unsigned int _CORBA_ULong;
6              template <class T> class _CORBA_Sequence {
7      public:   typedef _CORBA_Sequence<T> T_seq;
8         inline T_seq &operator= (const T_seq &s)   {
9          for (unsigned long i=0;
10      i < pd_len;
11      i++) {
12        }
13        }
14        _CORBA_ULong pd_len;
15      };
16              template <class T> class _CORBA_Unbounded_Sequence : public _CORBA_Sequence<T> {
17         inline _CORBA_Unbounded_Sequence_WChar() { // { dg-warning "forbids declaration" }
18        }
19      };
20        class _CORBA_ObjRef_Var_base {
21      };
22          template <class T, class T_Helper> class _CORBA_ObjRef_Var : public _CORBA_ObjRef_Var_base {
23      public:   typedef T* ptr_t;
24        typedef T* T_ptr;
25         inline _CORBA_ObjRef_Var() : pd_objref(T_Helper::_nil()) {
26     }
27        inline _CORBA_ObjRef_Var(T_ptr p) : pd_objref(p) {
28        }
29       private:   T_ptr pd_objref;
30       };
31         class omniLocalIdentity;
32          class omniObjRef {
33      };
34             class omniServant {
35       public:   virtual ~omniServant();
36         virtual void* _ptrToInterface(const char* repoId);
37           };
38          namespace CORBA  {
39       class NVList {
40      };
41       class Object {
42      };
43       struct StructMember {
44      };
45       class StructMemberSeq : public _CORBA_Unbounded_Sequence< StructMember > {
46         };
47       class _objref_IRObject :   public virtual ::CORBA::Object,   public virtual omniObjRef {
48      };
49       class _impl_IRObject :   public virtual omniServant {
50       };
51      class _objref_Container;
52       typedef _objref_Container* Container_ptr;
53       class _impl_Contained :   public virtual _impl_IRObject {
54      };
55      class _objref_ExceptionDef;
56       typedef _objref_ExceptionDef* ExceptionDef_ptr;
57       class ExceptionDef_Helper {
58      public:   typedef ExceptionDef_ptr _ptr_type;
59         static _ptr_type _nil();
60      };
61       typedef _CORBA_ObjRef_Var<_objref_ExceptionDef, ExceptionDef_Helper> ExceptionDef_var;
62       class Container {
63      public:    typedef Container_ptr _ptr_type;
64         static const char* _PD_repoId;
65        };
66       class _objref_Container :   public virtual _objref_IRObject {
67        ExceptionDef_ptr create_exception(const char* id, const char* name, const char* version, const ::CORBA::StructMemberSeq& members);
68      };
69       class _impl_Container :   public virtual _impl_IRObject {
70      public:   virtual ~_impl_Container();
71        virtual ExceptionDef_ptr create_exception(const char* id, const char* name, const char* version, const ::CORBA::StructMemberSeq& members) = 0;
72      };
73       class _impl_IDLType :   public virtual _impl_IRObject {
74      };
75       class _impl_TypedefDef :   public virtual _impl_Contained,   public virtual _impl_IDLType {
76      };
77       class _impl_StructDef :   public virtual _impl_TypedefDef,   public virtual _impl_Container {
78       };
79            }
80           namespace PortableServer {
81             class ServantBase : public virtual omniServant {
82     };
83              }
84          namespace POA_CORBA {
85            class IRObject :   public virtual CORBA::_impl_IRObject,   public virtual ::PortableServer::ServantBase {
86      };
87       class Contained :   public virtual CORBA::_impl_Contained,   public virtual IRObject {
88      };
89       class Container :   public virtual CORBA::_impl_Container,   public virtual IRObject {
90      };
91       class IDLType :   public virtual CORBA::_impl_IDLType,   public virtual IRObject {
92      };
93       class TypedefDef :   public virtual CORBA::_impl_TypedefDef,   public virtual Contained,     public virtual IDLType {
94      };
95       class StructDef :   public virtual CORBA::_impl_StructDef,   public virtual TypedefDef,     public virtual Container {
96      public:   virtual ~StructDef();
97      };
98        }
99          namespace omni {
100      class omniOrbPOA;
101      class giopAddress;
102      }
103              class omniCallDescriptor {
104      public:   typedef void (*LocalCallFn)(omniCallDescriptor*, omniServant*);
105         inline omniCallDescriptor(LocalCallFn lcfn, const char* op_,        int op_len_, _CORBA_Boolean oneway,        const char*const* user_excns_,        int n_user_excns_,                             _CORBA_Boolean is_upcall_)     : pd_localCall(lcfn),       pd_op(op_), pd_oplen(op_len_),       pd_user_excns(user_excns_),       pd_n_user_excns(n_user_excns_),       pd_is_oneway(oneway),       pd_is_upcall(is_upcall_),       pd_contains_values(0),       pd_first_address_used(0),       pd_current_address(0),       pd_objref(0),       pd_poa(0),       pd_localId(0),       pd_deadline_secs(0),       pd_deadline_nanosecs(0) {
106     }
107       private:   LocalCallFn pd_localCall;
108        const char* pd_op;
109        size_t pd_oplen;
110        const char*const* pd_user_excns;
111        int pd_n_user_excns;
112        _CORBA_Boolean pd_is_oneway;
113        _CORBA_Boolean pd_is_upcall;
114        _CORBA_Boolean pd_contains_values;
115         const omni::giopAddress* pd_first_address_used;
116        const omni::giopAddress* pd_current_address;
117            omniObjRef* pd_objref;
118         omni::omniOrbPOA* pd_poa;
119        omniLocalIdentity* pd_localId;
120               unsigned long pd_deadline_secs;
121        unsigned long pd_deadline_nanosecs;
122       };
123           class _0RL_cd_7963219a43724a61_f2000000   : public omniCallDescriptor {
124      public:   inline _0RL_cd_7963219a43724a61_f2000000(LocalCallFn lcfn,const char* op_,size_t oplen,_CORBA_Boolean upcall=0):      omniCallDescriptor(lcfn, op_, oplen, 0, _user_exns, 0, upcall)   {
125         }
126          static const char* const _user_exns[];
127        const char* arg_0;
128        const char* arg_1;
129        const char* arg_2;
130        const CORBA::StructMemberSeq* arg_3;
131        CORBA::ExceptionDef_var result;
132      };
133           static void _0RL_lcfn_7963219a43724a61_03000000(omniCallDescriptor* cd, omniServant* svnt) {
134        _0RL_cd_7963219a43724a61_f2000000* tcd = (_0RL_cd_7963219a43724a61_f2000000*)cd;
135        CORBA::_impl_Container* impl = (CORBA::_impl_Container*) svnt->_ptrToInterface(CORBA::Container::_PD_repoId);
136        tcd->result = impl->create_exception(tcd->arg_0, tcd->arg_1, tcd->arg_2, *tcd->arg_3);
137        }
138          CORBA::ExceptionDef_ptr CORBA::_objref_Container::create_exception(const char* id, const char* name, const char* version, const ::CORBA::StructMemberSeq& members) {
139        _0RL_cd_7963219a43724a61_f2000000 _call_desc(_0RL_lcfn_7963219a43724a61_03000000, "create_exception", 17);
140        }
141          POA_CORBA::StructDef::~StructDef() {
142     }