digitalmars.D.bugs - [Issue 17708] New: Escape control characters in std.conv.to error
- via Digitalmars-d-bugs (41/41) Jul 31 2017 https://issues.dlang.org/show_bug.cgi?id=17708
https://issues.dlang.org/show_bug.cgi?id=17708 Issue ID: 17708 Summary: Escape control characters in std.conv.to error messages Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: minor Priority: P1 Component: phobos Assignee: nobody puremagic.com Reporter: dlang-bugzilla thecybershadow.net Currently this program: ///// test.d //// import std.conv; void main() { to!int("\r"); } ///////////////// will produce output which looks like this in a terminal: ' when converting from type string to type intbin/../phobos/std/conv.d(2168): Unexpected ' ---------------- ??:? pure safe int std.conv.parse!(int, immutable(char)[]).parse(ref immutable(char)[]) [0x4331de] ??:? pure safe int std.conv.toImpl!(int, immutable(char)[]).toImpl(immutable(char)[]) [0x436a70] ??:? pure safe int std.conv.to!(int).to!(immutable(char)[]).to(immutable(char)[]) [0x432a83] ??:? _Dmain [0x432a5d] The error message appears malformed. std.conv.to should escape whitespace / control / non-printable characters in its error messages. Perhaps the existing functionality in std.conv / std.format can be reused: format!"%(%s%)"(c.only) will already correctly escape such characters. See discussion in https://github.com/dlang/phobos/pull/5591 (which fixed this issue specifically for the newline character only) for more details. --
Jul 31 2017