digitalmars.D - Weird writeln behavior with associative arrays
- Jens Mueller (20/20) Oct 15 2010 Hi,
- Andrei Alexandrescu (8/28) Oct 15 2010 This is odd. I can't reproduce your bug. Line 1088 is:
- Denis Koroskin (3/37) Oct 15 2010 I can reproduce it on Windows.
- Peter Alexander (2/7) Oct 15 2010 And I can reproduce on Mac OS X.
- Masahiro Nakagawa (4/24) Oct 15 2010 SHOO has already fixed this problem.
- Andrei Alexandrescu (4/6) Oct 15 2010 Great, thanks Shoo and Masahiro.
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
Oct 15 2010
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 JensThis 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
Oct 15 2010
On Fri, 15 Oct 2010 19:22:08 +0400, Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> wrote:On 10/15/2010 10:04 AM, Jens Mueller wrote:I can reproduce it on Windows.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 JensThis 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
Oct 15 2010
On 15/10/10 4:30 PM, Denis Koroskin wrote:On Fri, 15 Oct 2010 19:22:08 +0400, Andrei AlexandrescuAnd I can reproduce on Mac OS X.This is odd. I can't reproduce your bug. Line 1088 is: AndreiI can reproduce it on Windows.
Oct 15 2010
On Sat, 16 Oct 2010 00:04:22 +0900, Jens Mueller <jens.k.mueller gmx.de> 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 JensSHOO has already fixed this problem. http://www.dsource.org/projects/phobos/changeset/2030
Oct 15 2010
On 10/15/10 14:21 CDT, Masahiro Nakagawa wrote:SHOO has already fixed this problem. http://www.dsource.org/projects/phobos/changeset/2030Great, thanks Shoo and Masahiro. One thing - now firstTime is not needed anymore so it could go away. Andrei
Oct 15 2010