#if defined OK

typedef short short4[4];

enum et1{ev0, ev1};
struct strct1
{	any av;
	short4 sh4v;
	enum et1{ev1, ev2} f;
	union ut1 switch(enum et1 {ev_1, ev0, ev1, ev2})
	{	case ev1: short shv;
		default: long lnv;
	}uv1;
};

module mod1
{
	enum et1{ev0, ev1};
	struct strct1
	{	any av;
		short4 sh4v;
		enum et1{ev1, ev2} f;
		union ut1 switch(enum et1 {ev_1, ev0, ev1, ev2})
		{	case ev1: short shv;
			default: long lnv;
		}uv1;
	};
};

#endif // OK

#if defined ERR001
union ut1 switch(enum et1 {ev_1, ev0, ev1, ev2})
{	case ev1: short shv;
	default: long et1; // Error
	// IDL identifier `et1' redefined after use
}uv1;
#endif

#if defined ERR002
module m1
{
	typedef sequence<m1> t1; // Scoped name of an IDL type expected
};
#endif
