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