http://d.puremagic.com/issues/show_bug.cgi?id=4673
Summary: Bug in std.string (isNumeric) Product: D Version: unspecified Platform: All OS/Version: All Status: NEW Severity: normal Priority: P2 Component: Phobos AssignedTo: nob...@puremagic.com ReportedBy: petitv.i...@gmail.com --- Comment #0 from Petit Vincent <petitv.i...@gmail.com> 2010-08-18 12:08:20 CEST --- Created an attachment (id=725) Source code (from description) Hi. I was doing some recursivity with D and I probably found a bug with the isNumeric() function. Here's the source code (also in attach) : import std.stdio; import std.string; import std.conv; int main(string[] args) { if(args.length > 1) { int number; foreach(item; args) { if(isNumeric(item)) { number = parse!(uint)(item); // seems to have a bug with 'L' and 'F' values writeln("Facto of ", number, " is ", facto(number)); } } } else { writeln("You must specified a number."); } return 0; } uint facto(uint number) { uint result; if(number <= 1) { result = 1; } else { result = number * facto(number - 1); } return result; } See the result when running the compiled executables with these args : 5 8 A F >facto 5 8 A F Facto of 5 is 120 Facto of 8 is 40320 std.conv.ConError : std.conv(1070) : Can't convert 'F' of type string to type uint It seems that "F" and "L" alone are recognized as Float and Long specifier but ... there's no digit. I accept that 0F, 1L are digits but F and L alone are not. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------