[Issue 9260] New: getopt should allow setting booleans to false
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Wed Jan 2 19:12:06 PST 2013
http://d.puremagic.com/issues/show_bug.cgi?id=9260
Summary: getopt should allow setting booleans to false
Product: D
Version: D2
Platform: All
OS/Version: All
Status: NEW
Severity: enhancement
Priority: P2
Component: Phobos
AssignedTo: nobody at puremagic.com
ReportedBy: andrej.mitrovich at gmail.com
--- Comment #0 from Andrej Mitrovic <andrej.mitrovich at gmail.com> 2013-01-02 19:12:04 PST ---
import std.getopt;
void main(string[] args)
{
bool b;
getopt(args, "b", &b);
}
If you pass:
$ rdmd test.d --b=true
The '=true' is skipped, as getopt only cares whether '--b' is present. The
problem is that this leads to a user thinking that the opposite works:
$ rdmd test.d --b=false
However 'b' is still true in this case, the '=false' part is discarded.
The documentation *does* mention that booleans can only be set to on, however
it only uses the syntax '--b' and never mentions '--b=true' (it might be an
oversight allowing it). To avoid confusion and avoid code breakage, we should
either:
1) Throw when syntax '--b=false' is used, because it has no effect
2) Implement --b=false
I think #2 would be the best choice here.
The current alternative is to use enums, ala:
enum B { no, yes }
import std.getopt;
void main(string[] args)
{
B b;
getopt(args, "b", &b);
}
$ rdmd test.d --b=no
But there should be no problem implementing #2.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list