[Issue 2982] New: Assertion failure in function if() clause

d-bugmail at puremagic.com d-bugmail at puremagic.com
Fri May 15 13:25:48 PDT 2009


http://d.puremagic.com/issues/show_bug.cgi?id=2982

           Summary: Assertion failure in function if() clause
           Product: D
           Version: unspecified
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla at digitalmars.com
        ReportedBy: andrei at metalanguage.com


This code:

auto max(Ts...)(Ts args)
if (Ts.length >= 2
        && is(typeof(Ts[0].init > Ts[1].init ? Ts[1].init : Ts[0].init)))
{
    static if (Ts.length == 2)
        return args[1] > args[0] ? args[1] : args[0];
    else
        return max(max(args[0], args[1]), args[2 .. $]);
}

void main() {
   assert(max(4, 5) == 5);
   assert(max(2.2, 4.5) == 4.5);
   assert(max("Little", "Big") == "Little");

   assert(max(4, 5.5) == 5.5);
   assert(max(5.5, 4) == 5.5);
}

is greeted with this error:

dmd: inline.c:1423: Expression* FuncDeclaration::doInline(InlineScanState*,
Expression*, Array*): Assertion `parameters->dim == arguments->dim' failed.
Aborted
dmd: inline.c:1423: Expression* FuncDeclaration::doInline(InlineScanState*,
Expression*, Array*): Assertion `parameters->dim == arguments->dim' failed.
Aborted

when compiled with "-unittest -O -release -inline", and with this error:

dmd: glue.c:939: virtual unsigned int Type::totym(): Assertion `0' failed.
Aborted

when compiled without flags.

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


More information about the Digitalmars-d-bugs mailing list