// PERMUTE_ARGS: extern(C) int printf(const char*, ...); /***********************************/ enum : float { E1a, E1b, E1c } void test1() { assert(E1a == 0.0f); assert(E1b == 1.0f); assert(E1c == 2.0f); } /***********************************/ enum : string { E2a = "foo", E2b = "bar", E2c = "abc" } void test2() { assert(E2a == "foo"); assert(E2b == "bar"); assert(E2c == "abc"); } /***********************************/ enum E3 : string { E3a = "foo", E3b = "bar", E3c = "abc" } void test3() { printf("%.*s\n", E3.E3a.length, E3.E3a.ptr); assert(E3.E3a == "foo"); assert(E3.E3b == "bar"); assert(E3.E3c == "abc"); } /***********************************/ enum E4 : char { Tvoid = 'v', Tbool = 'b', } void test4() { E4 m; } /***********************************/ enum E5 : byte { e1, e2 } void test5() { E5 m; } /***********************************/ enum : ubyte { REend, REchar, REichar, REdchar, REidchar, REanychar, } void foo6(ubyte) { } void foo6(int) { assert(0); } void test6() { foo6(REchar); } /***********************************/ enum { foo7 = 1, long bar7 = 2, abc7, } enum x7 = 3; void test7() { assert(x7 == 3); assert(is(typeof(foo7) == int)); assert(is(typeof(bar7) == long)); assert(is(typeof(abc7) == long)); assert(abc7 == 3L); } /***********************************/ enum E8 : real { a, b } /***********************************/ struct S7379 { enum ENUM { M1, M2, M3 } alias ENUM this; } class C7379 { this(S7379 test) { } this(string test) { this(S7379()); } } /***********************************/ int main() { test1(); test2(); test3(); test4(); test5(); test6(); test7(); printf("Success\n"); return 0; }