Bug 7857 – File#write formats enum as a boolean.

Status
RESOLVED
Resolution
FIXED
Severity
regression
Priority
P2
Component
phobos
Product
D
Version
D2
Platform
All
OS
All
Creation time
2012-04-08T07:14:00Z
Last change time
2012-04-08T10:01:35Z
Keywords
pull
Assigned to
nobody
Creator
repeatedly

Comments

Comment #0 by repeatedly — 2012-04-08T07:14:50Z
Test code is below: ----- enum EI : int { A, B } enum ED : double { A, B } writeln(EI.A); // false, but A on 2.058 writeln(EI.B); // true, but B on 2.058 writeln(ED.A); // A writeln(ED.B); // B ----- The reason of this bug is isBoolean template returns true. (BooleanTypeOf template returns "immutable(bool)"). std.stdio.File#write's code: ----- void write(S...)(S args) { auto w = lockingTextWriter; foreach (arg; args) { alias typeof(arg) A; static if (isSomeString!A) { put(w, arg); } else static if (isIntegral!A) { toTextRange(arg, w); } else static if (isBoolean!A) // Oops! enum into this block. { put(w, arg ? "true" : "false"); } else static if (isSomeChar!A) { put(w, arg); } else { // Most general case std.format.formattedWrite(w, "%s", arg); } } } ----- This bug is major issue for me.
Comment #1 by k.hara.pg — 2012-04-08T08:57:51Z
Not only a problem of integer based enum type. import std.stdio; void main() { enum EI : int { A, B } enum ED : double { A, B } enum EC : char { A, B } enum ES : string { A = "aaa", B = "bbb" } writeln(EI.A); // false, but A on 2.058 writeln(EI.B); // true, but B on 2.058 writeln(ED.A); // A writeln(ED.B); // B writeln(EC.A); // false writeln(EC.B); // true writeln(ES.A); // aaa writeln(ES.B); // bbb } Pull request: https://github.com/D-Programming-Language/phobos/pull/531
Comment #2 by github-bugzilla — 2012-04-08T09:21:55Z
Commits pushed to master at https://github.com/D-Programming-Language/phobos https://github.com/D-Programming-Language/phobos/commit/a153ac3f3b757a388210952a782f022d9f9141a5 fix Issue 7857 - File#write formats enum as a boolean. https://github.com/D-Programming-Language/phobos/commit/eec836074e7f321c2c9bb28e57ee33fc5a497480 Merge pull request #531 from 9rnsr/fix7857 Issue 7857 - File#write formats enum as a boolean.
Comment #3 by bugzilla — 2012-04-08T09:58:09Z
Should I mark this as fixed, then?
Comment #4 by repeatedly — 2012-04-08T10:01:35Z
(In reply to comment #3) > Should I mark this as fixed, then? Oops. I forgot to close this issue.