www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 18751] New: chunkBy predicate cannot access local variable

https://issues.dlang.org/show_bug.cgi?id=18751

          Issue ID: 18751
           Summary: chunkBy predicate cannot access local variable
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P1
         Component: phobos
          Assignee: nobody puremagic.com
          Reporter: hsteoh quickfur.ath.cx

Code:
-------
unittest
{
    import std.algorithm.comparison : equal;
    import std.algorithm.iteration : chunkBy;

    string[] data = [ "abc", "abc", "def" ];
    int[] indices = [ 0, 1, 2 ];

    auto chunks = indices.chunkBy!((i, j) => data[i] == data[j]);
    assert(chunks.equal!equal([ [ 0, 1 ], [ 2 ] ]));
}
-------

Compiler output:
-------
/usr/src/d/phobos/std/algorithm/iteration.d(1761): Error: function
test.__unittest_L9_C1.ChunkByImpl!(__lambda1, int[]).ChunkByImpl.Group.popFront
cannot access frame of function test.__unittest_L9_C1
/usr/src/d/phobos/std/range/primitives.d(884): Error: template instance
`std.range.primitives.isInputRange!(Group)` error instantiating
/usr/src/d/phobos/std/algorithm/iteration.d(1781):        instantiated from
here: isForwardRange!(Group)
-------

--
Apr 09 2018