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

           Summary: [CTFE] a check failure of memory block inclusion
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Keywords: CTFE
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nob...@puremagic.com
        ReportedBy: k.hara...@gmail.com


--- Comment #0 from Kenji Hara <k.hara...@gmail.com> 2012-10-24 09:29:15 PDT ---
>From the comment at https://github.com/D-Programming-Language/druntime/pull/335
---
version = bug;

bool foo(const(int)[] a, const(int)[] b)
{
  version(bug) {
    return a.length &&
           b.ptr >= a.ptr &&
           b.ptr + b.length <= a.ptr + a.length;
  } else {
    if (a.length && b.length)
    {
        auto bend = b.ptr + b.length;
        auto aend = a.ptr + a.length;
        return a.ptr <= b.ptr && bend <= aend;
    }
    return false;
  }
}
bool bug1()
{
    auto a1 = [1,2,3,4,5];
    return foo(a1[0..4], a1[2..4]);
}
bool bug2()
{
    auto a1 = [1,2,3,4,5];
    auto a2 = [1,2,3,4,5];
    return foo(a1[0..4], a2[2..4]);
}
static assert( bug1());
static assert(!bug2());    // Fails CTFE when version = bug; defines.
---

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

Reply via email to