//testsubgroup typedef_inheritance
//tsgdescr "Testing scope of typedef declarations with the valuetype inheritance"


valuetype ShortValue short;
valuetype LongValue long;

typedef ShortValue TestType;

abstract valuetype ValA {
	void op1(in TestType p);
};

abstract valuetype ValB {
	typedef LongValue TestType;
	void op2(in TestType p);
};

valuetype ValC {
	typedef string TestType;
	public TestType Mbr3;
	void op3(in TestType p);
};

valuetype ValD:ValC {
	public TestType Mbr4;
	void op4(in TestType p);
};

valuetype ValE:ValD,ValB,ValA
{
	typedef ::TestType ShortType;
	typedef ValB::TestType LongType;
	typedef ValC::TestType StringType;
	typedef ValD::TestType StringType2;
	void op5(in ShortType p);
	void op6(in LongType p);
	void op7(in StringType p);
	void op8(in StringType2 p);
};
