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

117 lines
1.9 KiB
C#

using System;
public class Blah {
enum Bar {
a = MyEnum.Foo,
b = A.c,
c = MyEnum.Bar,
d = myconstant,
e = myconstant | 0x1fff
}
public enum MyEnum : byte {
Foo = 254,
Bar = (byte) B.y
}
enum A {
a, b, c
}
enum B {
x, y, z
}
enum AA : byte { a, b }
enum BB : ulong { x = ulong.MaxValue - 1, y }
const int myconstant = 30;
enum Compute : ulong {
two = AA.b + B.y,
three = AA.b - B.y,
four = A.a * BB.x,
five = AA.b >> B.y,
}
internal enum WindowAttributes : uint {
kWindowNoAttributes = 0,
kWindowCloseBoxAttribute = (1u << 0),
kWindowHorizontalZoomAttribute = (1u << 1),
kWindowVerticalZoomAttribute = (1u << 2),
kWindowCollapseBoxAttribute = (1u << 3),
kWindowNoConstrainAttribute = (1u << 31),
kWindowStandardFloatingAttributes = (kWindowCloseBoxAttribute | kWindowCollapseBoxAttribute)
}
// The constant assignment follows a different path
const Bar bar_assignment = 0;
public static int Main ()
{
byte b = (byte) MyEnum.Foo;
Console.WriteLine ("Foo has a value of " + b);
if (b != 254)
return 1;
int i = (int) A.a;
int j = (int) B.x;
int k = (int) A.c;
int l = (int) AA.b + 1;
if ((int) Compute.two != 2)
return 10;
if (i != j)
return 1;
if (k != l)
return 1;
A var = A.b;
i = (int) Bar.a;
if (i != 254)
return 1;
i = (int) Bar.b;
if (i != 2)
return 1;
j = (int) Bar.c;
if (j != 1)
return 1;
j = (int) Bar.d;
if (j != 30)
return 1;
Enum e = Bar.d;
if (e.ToString () != "d")
return 15;
//
// Test "U operator (E x, E x)"
//
// Notice that the Microsoft C# compiler wont compile the following
// code, that is a bug in their compiler, see section 14.7.5 of the
// spec.
if ((A.c - A.a) != 2)
return 16;
if ((A.c - 1) != A.b)
return 17;
Console.WriteLine ("Value: " + e.ToString ());
Console.WriteLine ("Enum emission test okay");
return 0;
}
}