digitalmars.D.bugs - writef and enum (Error: std.format formatArg)
- Regan Heath (14/14) Apr 06 2005 This has to be an old, or known bug, but a quick search found nothing...
- Stewart Gordon (11/28) Apr 06 2005 Clearly the TypeInfo for enums is still not properly implemented. But
This has to be an old, or known bug, but a quick search found nothing...
import std.stdio;
enum FOO : int { A, B, C }
void main()
{
FOO a = FOO.A;
writefln(a);
writefln("%d",a);
}
neither writefln works. Both give "Error: std.format formatArg". Note the
enum is typed, it doesn't seem to matter whether it is or not. A quick
un-educated peek in doFormat shows no switch case for enums, so unless
they're classified as ints?
Regan
Apr 06 2005
Regan Heath wrote:
This has to be an old, or known bug, but a quick search found nothing...
import std.stdio;
enum FOO : int { A, B, C }
void main()
{
FOO a = FOO.A;
writefln(a);
writefln("%d",a);
}
neither writefln works. Both give "Error: std.format formatArg". Note
the enum is typed, it doesn't seem to matter whether it is or not. A
quick un-educated peek in doFormat shows no switch case for enums, so
unless they're classified as ints?
Clearly the TypeInfo for enums is still not properly implemented. But
if using %d, it certainly ought to just output the numerical value.
AIUI, the plan for %s (or no active format string) on enums is to have
it output the enum constant name. But it isn't clear what it should do
if there's no matching constant (as with a set of bit flags) or more
than one.
Stewart.
--
My e-mail is valid but not my primary mailbox. Please keep replies on
the 'group where everyone may benefit.
Apr 06 2005








Stewart Gordon <smjg_1998 yahoo.com>