www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - Incorrect output using bit[][]

Stop me if I've got the wrong end of the stick but:

DMD seems to incorrectly set bits in arrays of bit arrays. The following 
test program:

import std.stdio;

int main( char[][] args )
{
     bit[][] foo;

     foo.length = 5;
     for( int i = 0; i < foo.length; ++i )
         foo[i].length = 5;

     foo[0][1] = true;
     foo[1][0] = true;

     foo[0][4] = true;
     foo[4][0] = true;

     foo[2][3] = true;
     foo[3][2] = true;

     for( int j = 0; j < 5; ++j )
         writefln( foo[j] );

     return 0;
}

gives output:

[false,false,false,false,false]
[true,false,false,false,false]
[false,false,false,false,false]
[false,false,false,false,false]
[true,false,false,false,false]

Obviously there should be more 'trues' - looks like only the first bit 
in each array is set. If I change 'bit[][]' to 'byte[]][]' all the 1s 
are in the right places:

[0,1,0,0,1]
[1,0,0,0,0]
[0,0,0,1,0]
[0,0,1,0,0]
[1,0,0,0,0]

Happens using DMD v0.143 under winXP and linux
Jan 15 2006