digitalmars.D.bugs - [Issue 20541] New: Digit separator in range format doesn't work
- d-bugmail puremagic.com (30/30) Jan 28 2020 https://issues.dlang.org/show_bug.cgi?id=20541
https://issues.dlang.org/show_bug.cgi?id=20541 Issue ID: 20541 Summary: Digit separator in range format doesn't work Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: normal Priority: P1 Component: phobos Assignee: nobody puremagic.com Reporter: simen.kjaras gmail.com import std.stdio; writefln("%,?d", '_', 10000); // A writefln("%(%,?d%)", [10000]); // B writefln("%(%,?d%)", '_', [10000]); // C writefln("%,?d", 10000); // D On my machine, A prints '10_000', B prints '10,000', C throws 'incompatible format character for integral argument', and D throws 'separator character expected'. As I have specified in the element format string in B and C, I wish to pass the digit separator as an argument to writefln, but that does not appear possible. Not only that, but D throws, while B doesn't. Solving this in a way that allows the programmer to pass the digit separator as an argument will require lookahead - the range format specifier will need to know how many arguments the element format specifier expects, and pass it those arguments. If this is not possible, the function should throw on an invalid format specifier as in case D. --
Jan 28 2020