March 11, 2006
http://d.puremagic.com/bugzilla/show_bug.cgi?id=36

           Summary: Odd enum forward-reference (?) alias bug
           Product: D
           Version: 0.149
          Platform: PC
        OS/Version: Windows
            Status: NEW
          Severity: minor
          Priority: P2
         Component: DMD
        AssignedTo: braddr@puremagic.com
        ReportedBy: jarrett.billingsley@gmail.com


This is an obscure one.

This code compiles, as expected:

enum E
{
        One,
        Two,
        Three
}

class A
{
        alias void delegate(E) EDG;

        static void fork(EDG dg)
        {
                dg(E.One);
        }
}

But move the alias declaration after the function:

class A
{
        static void fork(EDG dg)
        {
                dg(E.One);
        }

        alias void delegate(E) EDG;
}

And you get the cryptic error:

dtest.d(18): cannot implicitly convert expression (0) of type E to E

Maybe this has something to do with forward referencing?


-- 

March 13, 2006
d-bugmail@puremagic.com schrieb am 2006-03-11:
> But move the alias declaration after the function:
>
> class A
> {
>         static void fork(EDG dg)
>         {
>                 dg(E.One);
>         }
>
>         alias void delegate(E) EDG;
> }
>
> And you get the cryptic error:
>
> dtest.d(18): cannot implicitly convert expression (0) of type E to E
>
> Maybe this has something to do with forward referencing?

Added to DStress as http://dstress.kuehne.cn/run/a/alias_32_A.d http://dstress.kuehne.cn/run/a/alias_32_B.d http://dstress.kuehne.cn/run/a/alias_32_C.d http://dstress.kuehne.cn/run/a/alias_32_D.d http://dstress.kuehne.cn/run/a/alias_32_E.d http://dstress.kuehne.cn/run/a/alias_32_F.d http://dstress.kuehne.cn/run/a/alias_32_G.d http://dstress.kuehne.cn/run/a/alias_32_H.d http://dstress.kuehne.cn/run/a/alias_32_I.d http://dstress.kuehne.cn/run/t/typedef_13_A.d http://dstress.kuehne.cn/run/t/typedef_13_B.d http://dstress.kuehne.cn/run/t/typedef_13_C.d http://dstress.kuehne.cn/run/t/typedef_13_D.d http://dstress.kuehne.cn/run/t/typedef_13_E.d http://dstress.kuehne.cn/run/t/typedef_13_F.d http://dstress.kuehne.cn/run/t/typedef_13_G.d http://dstress.kuehne.cn/run/t/typedef_13_H.d http://dstress.kuehne.cn/run/t/typedef_13_I.d

Thomas