Weird writeln behavior with associative arrays

Denis Koroskin 2korden at gmail.com
Fri Oct 15 08:30:50 PDT 2010


On Fri, 15 Oct 2010 19:22:08 +0400, Andrei Alexandrescu  
<SeeWebsiteForEmail at erdani.org> wrote:

> On 10/15/2010 10:04 AM, Jens Mueller wrote:
>> Hi,
>>
>> this program
>> import std.stdio;
>>
>> void main() {
>> 	double[string] foo;
>> 	foo["test"] = 10;
>> 	foo["atadfest"] = 10;
>> 	// fails if foo.length>  1
>> 	writeln(foo);
>> }
>>
>> fails with:
>> phobos/std/format.d(1088): Enforcement failed
>>
>> Am I not allowed to to this? If I have only one element, then it works
>> as expected. If I change double to int, then I get "test:10 a:10". So
>> somehow only the first character is displayed. Maybe a phobos bug? Any
>> ideas?
>>
>> I'm using Linux and latest dmd.
>> $ dmd | head -n1
>> Digital Mars D Compiler v2.049
>>
>> Jens
>
> This is odd. I can't reproduce your bug. Line 1088 is:
>
>      enforce(f.spec == 's');
>
> because indeed the default formatting specifier is "%s". Could there be  
> a lack of sync between the compiled library and the import files? For  
> example, if the layout of the internal format structure has changed,  
> then f.spec will have the wrong offset.
>
>
> Andrei

I can reproduce it on Windows.


More information about the Digitalmars-d mailing list