[Issue 6395] New: Multiple-at-a-time bug breaking e.g. DustMite

d-bugmail at puremagic.com d-bugmail at puremagic.com
Thu Jul 28 10:55:31 PDT 2011


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

           Summary: Multiple-at-a-time bug breaking e.g. DustMite
           Product: D
           Version: D2
          Platform: Other
        OS/Version: Mac OS X
            Status: NEW
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody at puremagic.com
        ReportedBy: code at klickverbot.at


--- Comment #0 from klickverbot <code at klickverbot.at> 2011-07-28 10:55:29 PDT ---
The test case, reduced as much as I easily could achieve (I spent too much time
on this already, maybe I've missed something obvious):

a.d:
---
import c;
---

b.d:
---
import c;

int regex(string pattern)
{
  return 0;
}

bool match(string r)
{
  return true;
}

void applyNoRemoveRegex()
{
  void scan(string[] noRemoveStr, string e)
  {
    auto a = find!((a){return match(e);})(map!regex(noRemoveStr));
  }
}
---

c.d:
---
template map(alias fun) {
  auto map(Range)(Range r) {
    struct Result
    {
      @property auto ref front()
      {
        return fun("a");
      }
    }
    return Result();
  }
}

Range find(alias pred, Range)(Range haystack) {
  pred(haystack.front);
  return haystack;
}
---

$ dmd -c a.d b.d
Assertion failed: (!vthis->csym), function toObjFile, file glue.c, line 719.
Abort trap: 6

If you reverse the source files in the dmd parameter list, the example compiles
fine.

The bug was found by trying to compile DustMite with DMD 2.054
(https://github.com/CyberShadow/DustMite/wiki/Building-DustMite).

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