[Issue 5907] New: CTFE: Ref assignments are noop at compile time

d-bugmail at puremagic.com d-bugmail at puremagic.com
Thu Apr 28 17:09:05 PDT 2011


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

           Summary: CTFE: Ref assignments are noop at compile time
           Product: D
           Version: unspecified
          Platform: Other
        OS/Version: Windows
            Status: NEW
          Severity: major
          Priority: P2
         Component: DMD
        AssignedTo: nobody at puremagic.com
        ReportedBy: andrej.mitrovich at gmail.com


--- Comment #0 from Andrej Mitrovic <andrej.mitrovich at gmail.com> 2011-04-28 17:05:20 PDT ---
auto ok()
{
    int[2] result;
    foreach (index, ref sample; result)
    {
        result[index] = 1;
    }
    return result;    
}

auto fail()
{
    int[2] result;
    foreach (index, ref sample; result)
    {
        sample = 1;
    }
    return result;
}

float[2] ctfe_ok   = ok();
float[2] ctfe_fail = fail();

void main()
{
    assert(ok == [1, 1]);       // ok
    assert(fail == [1, 1]);     // ok

    assert(ctfe_ok == [1, 1]);
    assert(ctfe_fail == [1, 1]);    // throws
}

Unfortunately they fail silently and then you have bugs in your code. I'm not
sure but maybe this bug was reported already? (or a fix is scheduled for the
next release?) 

I couldn't be sure so I'm reporting it just in case.

-- 
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