www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 1409] New: Assertion failure: '0' on line 4799 in file 'expression.c'

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1409

           Summary: Assertion failure: '0' on line 4799 in file
                    'expression.c'
           Product: D
           Version: 1.020
          Platform: PC
        OS/Version: Windows
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla digitalmars.com
        ReportedBy: sky quit-clan.de


The compiler crashes on the following code (which is, in its current state,
invalid - but i can't debug it because of the compiler crash).
I'm sorry that i could not reduce it further.
-----
import std.traits;

private template XParameters(uint n, T...)
{
    alias T[0..n] types;
    alias T[n..$] curried;
}

private template FuncOpcalls(uint i, alias F, alias parameters)
{
    alias Func!(F, parameters.curried.length + i) NewFunc;

    NewFunc opCall(parameters.types[0..i] p)
    {
        return new NewFunc(parameters.curried, p);
    }

    static if (i < parameters.types.length)
        mixin FuncOpcalls!(i+1, F, parameters);
}

class Func(alias F, uint nCurried=0)
{
    alias ParameterTypeTuple!(F) paramTypes;
    paramTypes[0..nCurried] curriedParameters;

    mixin FuncOpcalls!(1, F, XParameters!(paramTypes.length, paramTypes,
curriedParameters));
}

void add(int)
{
}

alias Func!(add) c_add;
-----

Compiler output:
-----
Assertion failure: '0' on line 4799 in file 'expression.c'

abnormal program termination
-----


-- 
Aug 09 2007
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1409


deewiant gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |ice-on-invalid-code





Reduced:
--
import std.traits;

template XParameters(T...)
{
    alias T curried;
}

template FuncOpcalls(alias parameters)
{
    alias Func!(parameters.curried + i) NewFunc;
}

class Func(alias F)
{
    ParameterTypeTuple!(F) curriedParameters;

    mixin FuncOpcalls!(XParameters!(curriedParameters));
}

alias Func!((int){}) c_add;
--
Appears to be a known bug: a comment in expression.c says "BUG: handle other
cases like in IdentifierExp::semantic()" just prior to the assert(0) which this
hits.


-- 
Aug 10 2007
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1409






Still there as of DMD 1.022.  Line number is now 4826, though.


-- 
Oct 09 2007
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1409


Don <clugdbug yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |clugdbug yahoo.com.au
         Resolution|                            |FIXED





Fixed sometime before DMD1.045 and 2.030.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 14 2009