www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Internal error: e2ir.c 1242

I'd say, I found another compiler bug.

-----------------
import std.stdio;

template Struct(alias bar)
{
    struct S
    {
        void foo()
        {
            FancyFunc!(this, bar).fn();
        }
    }
}
template FancyFunc(alias context, alias f)
{
    void fn()
    {
        writeln("before");
        f(context);
        writeln("after");
    }
}
void bar(CT)(CT context)
{
    writeln(CT.stringof);
}
void main()
{
    alias Struct!(bar).S MyStruct;
    MyStruct s = MyStruct();
    s.foo();
}
----------------------

Compile it with dmd and dmd will print:

 Internal error: e2ir.c 1242

Should the aliasing of "this" in FancyFunc!(this, bar) work, if there were no internal compiler error? In any case I've filed a report (http://d.puremagic.com/issues/show_bug.cgi?id=6918). -- Tobias
Nov 09 2011