[Issue 6521] writeln(const(tuple)) doesn't show the field values

d-bugmail at puremagic.com d-bugmail at puremagic.com
Wed Aug 17 18:15:40 PDT 2011


http://d.puremagic.com/issues/show_bug.cgi?id=6521



--- Comment #1 from Kenji Hara <k.hara.pg at gmail.com> 2011-08-17 18:15:36 PDT ---
Expected prints:

Tuple!(int)(1)
const(Tuple!(int))(1)

There are two ways to fix the problem.

1. Change std.typecons.Tuple!T.toString like follows:

diff --git a/std/typecons.d b/std/typecons.d
index b279abf..b80d6f9 100644
--- a/std/typecons.d
+++ b/std/typecons.d
@@ -491,9 +491,9 @@ assert(s[0] == "abc" && s[1] == 4.5);
 /**
    Converts to string.
  */
-    string toString()
+    const string toString(this T)()
     {
-        enum header = typeof(this).stringof ~ "(",
+        enum header = T.stringof ~ "(",
              footer = ")",
              separator = ", ";
         Appender!string app;

But this is very hackish to me.

2. Apply my pull request
https://github.com/D-Programming-Language/phobos/pull/126
This patch changes formattedWrite behavior: if a struct type does not have
toString method, formattedWrite formats it like POD (e.g. "TypeName(field,
...)").

I think that Tuple is just a POD type, and expected formatting also looks like
the POD.
So, IMHO, std.typecons.Tuple!T.toString is *just a workaround*.
If formattedWrite works correctly, we will no longer need Tuple!T.toString.

-- 
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