Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

207 lines
2.5 KiB
C#

using System;
enum E : uint
{
Value = 24
}
class A
{
public static implicit operator sbyte (A mask)
{
return 1;
}
public static implicit operator byte (A mask)
{
return 2;
}
public static implicit operator short (A mask)
{
return 3;
}
public static implicit operator ushort (A mask)
{
return 4;
}
public static implicit operator int (A mask)
{
return 5;
}
public static implicit operator uint (A mask)
{
return 6;
}
public static implicit operator long (A mask)
{
return 7;
}
public static implicit operator ulong (A mask)
{
return 8;
}
}
class A2
{
public static implicit operator sbyte (A2 mask)
{
return 1;
}
public static implicit operator byte (A2 mask)
{
return 2;
}
public static implicit operator short (A2 mask)
{
return 3;
}
public static implicit operator uint (A2 mask)
{
return 6;
}
public static implicit operator long (A2 mask)
{
return 7;
}
public static implicit operator ulong (A2 mask)
{
return 8;
}
}
class A3
{
public static implicit operator sbyte (A3 mask)
{
return 1;
}
public static implicit operator uint (A3 mask)
{
return 6;
}
public static implicit operator long (A3 mask)
{
return 7;
}
public static implicit operator ulong (A3 mask)
{
return 8;
}
}
class A4
{
public static implicit operator uint (A4 mask)
{
return 6;
}
public static implicit operator long (A4 mask)
{
return 7;
}
public static implicit operator ulong (A4 mask)
{
return 8;
}
}
class A5
{
public static implicit operator uint (A5 mask)
{
return 6;
}
public static implicit operator int (A5 mask)
{
return 8;
}
}
class A6
{
public static implicit operator byte (A6 mask)
{
return 2;
}
}
class MyDecimal
{
public static implicit operator decimal (MyDecimal d)
{
return 42;
}
}
public class Constraint
{
public static int Main ()
{
A a = null;
A2 a2 = null;
A3 a3 = null;
A4 a4 = null;
A5 a5 = null;
A6 a6 = null;
if (-a != -5)
return 1;
if (-a2 != -3)
return 2;
if (-a3 != -1)
return 3;
if (-a4 != -7)
return 4;
if (-a5 != -8)
return 5;
if (-a6 != -2)
return 6;
if (~a != -6)
return 10;
if (~a2 != -4)
return 11;
if (~a3 != -2)
return 12;
if (~a4 != 4294967289)
return 13;
if (~a5 != -9)
return 14;
if (~a6 != -3)
return 15;
MyDecimal d = new MyDecimal ();
if (-d != -42)
return 20;
E e = E.Value;
if (~e != (E)4294967271)
return 21;
uint dp = 0;
dp = +dp;
Console.WriteLine ("OK");
return 0;
}
}