//
// This tests that conversions from Enum and ValueType to structs
// are treated as unboxing conversions, and the `unbox' opcode
// is emitted. #52569.
//

enum Foo { Bar }
class T {
	public static int Main ()
	{
		System.Enum e = Foo.Bar;
		System.ValueType vt1 = Foo.Bar, vt2 = 1;
		
		if (((Foo) e) != Foo.Bar)
			return 1;
		
		if (((Foo) vt1) != Foo.Bar)
			return 2;
		
		if (((int) vt2) != 1)
			return 3;

		//
		// Test that we can assign null to a valueType
		//

		System.ValueType vt = null;
		
		return 0;
	}
}