April 08, 2014 [Issue 12544] New: Differences in ubyte/char enum printing | ||||
|---|---|---|---|---|
| ||||
https://d.puremagic.com/issues/show_bug.cgi?id=12544 Summary: Differences in ubyte/char enum printing Product: D Version: D2 Platform: x86 OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: Phobos AssignedTo: nobody@puremagic.com ReportedBy: bearophile_hugs@eml.cc --- Comment #0 from bearophile_hugs@eml.cc 2014-04-08 03:24:22 PDT --- I am not sure if this is a bug, a regression, or it's working as designed. Currently this code shows a difference in the outputs that perhaps should not exist: void main() { import std.stdio; enum E1 : ubyte { A='a' } E1[10] v1; writeln(v1); enum E2 : char { A='a' } E2[10] v2; writeln(v2); writefln("%-(%c%)", v2); } DMD 2.066alpha output: [A, A, A, A, A, A, A, A, A, A] aaaaaaaaaa aaaaaaaaaa Expected output: [A, A, A, A, A, A, A, A, A, A] [A, A, A, A, A, A, A, A, A, A] aaaaaaaaaa -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- | ||||
April 08, 2014 [Issue 12544] Differences in ubyte/char enum printing | ||||
|---|---|---|---|---|
| ||||
Posted in reply to bearophile_hugs@eml.cc | https://d.puremagic.com/issues/show_bug.cgi?id=12544 monarchdodra@gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |monarchdodra@gmail.com --- Comment #1 from monarchdodra@gmail.com 2014-04-08 06:54:41 PDT --- The code goes through the "formatRange" branch of `std.format`. In format range, the code checks if it is a range of chars: - range of chars => print string (eg: aaaaaaa...) - range of non-chars => print array (eg: [A, A, A, A, A... The issue is one of determining "what is a char"? Currently, the code uses: is(CharTypeOf!(ElementType!T)) Which mean any type that implicitly casts to char is fair game (including structs with "alias this"). *Arguably*, I think `isSomeChar` would be better, as it only accepts *actual* chars. But even then, it would still accept enums whose base type is char, as technically, they *are* chars. Unfortunately, there is always ambiguity when asking to print an enum of a char or string. I don't know either if this is bug or working as designed. (I don't think it's a regression though... did you test other versions?) -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- | |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply