http://d.puremagic.com/issues/show_bug.cgi?id=8729
Summary: parse!bool does not work correctly Product: D Version: unspecified Platform: All OS/Version: All Status: NEW Severity: normal Priority: P2 Component: Phobos AssignedTo: nob...@puremagic.com ReportedBy: jmdavisp...@gmx.com --- Comment #0 from Jonathan M Davis <jmdavisp...@gmx.com> 2012-09-26 10:29:46 PDT --- This code import std.conv; import std.stdio; void main() { auto str = "123 456.7 false"; auto i = parse!int(str); auto d = parse!double(str); auto b = parse!bool(str); assert(i == 123); assert(d == 456.7); assert(b == false); } results in this exception when you run it std.conv.ConvException@std/conv.d(2654): Can't parse string: bool should be case-insensive 'true' or 'false' ---------------- ./q(bool std.conv.parse!(bool, immutable(char)[]).parse(ref immutable(char)[])+0x183) [0x43867b] ./q(_Dmain+0x42) [0x430ec2] ./q(extern (C) int rt.dmain2.main(int, char**).void runMain()+0x1c) [0x43b240] ./q(extern (C) int rt.dmain2.main(int, char**).void tryExec(scope void delegate())+0x2a) [0x43abba] ./q(extern (C) int rt.dmain2.main(int, char**).void runAll()+0x3b) [0x43b287] ./q(extern (C) int rt.dmain2.main(int, char**).void tryExec(scope void delegate())+0x2a) [0x43abba] ./q(main+0xd1) [0x43ab45] /usr/lib/libc.so.6(__libc_start_main+0xf5) [0x7fd238fc1725] ---------------- If you change it to import std.conv; import std.stdio; void main() { auto str = "false 123 456.7"; auto b = parse!bool(str); auto i = parse!int(str); auto d = parse!double(str); assert(i == 123); assert(d == 456.7); assert(b == false); } you get std.conv.ConvException@std/conv.d(1771): Unexpected ' ' when converting from type string to type int ---------------- ./q(int std.conv.parse!(int, immutable(char)[]).parse(ref immutable(char)[])+0x1b8) [0x431984] ./q(_Dmain+0x33) [0x430eb3] ./q(extern (C) int rt.dmain2.main(int, char**).void runMain()+0x1c) [0x43b240] ./q(extern (C) int rt.dmain2.main(int, char**).void tryExec(scope void delegate())+0x2a) [0x43abba] ./q(extern (C) int rt.dmain2.main(int, char**).void runAll()+0x3b) [0x43b287] ./q(extern (C) int rt.dmain2.main(int, char**).void tryExec(scope void delegate())+0x2a) [0x43abba] ./q(main+0xd1) [0x43ab45] /usr/lib/libc.so.6(__libc_start_main+0xf5) [0x7f1286cc0725] ---------------- Just parsing out bool when it's first and then parsing _nothing_ else works, but it seems like parsing it under any other circumstances fails (from what I can tell anyway). -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------