Bug 6606 – RefCounted doesn't work with unions due to use of format

Status
RESOLVED
Resolution
FIXED
Severity
regression
Priority
P2
Component
phobos
Product
D
Version
D2
Platform
Other
OS
Windows
Creation time
2011-09-05T17:24:00Z
Last change time
2011-09-06T02:19:05Z
Keywords
patch
Assigned to
nobody
Creator
dsimcha

Comments

Comment #0 by dsimcha — 2011-09-05T17:24:01Z
import std.typecons; struct S { U u; } union U { size_t i; void* p; } alias RefCounted!(S) SRC; C:\dmd2\windows\bin\..\..\src\phobos\std\format.d(1853): Error: static assert "unable to format union object because it does not have toString" C:\dmd2\windows\bin\..\..\src\phobos\std\format.d(1982): instantiated from here: formatValue!(Appender!(string),U,char) C:\dmd2\windows\bin\..\..\src\phobos\std\format.d(309): instantiated from here: formatGeneric!(Appender!(string),U,immutable(char)) C:\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(511): instantiated from here: formattedWrite!(Appender!(string),immutable(char),U) ... (4 instantiations, -v to show) ... C:\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(2386): instantiated from here: Tuple!(S,"_payload",uint,"_count") C:\code\test.d(12): instantiated from here: RefCounted!(S)
Comment #1 by dsimcha — 2011-09-05T17:36:26Z
Actually, it's a problem with Tuple or format, depending on how you look at it. This doesn't work either, for basically the same reason: import std.typecons; union U { size_t i; void* p; } alias Tuple!U T;
Comment #2 by code — 2011-09-05T19:19:33Z
When did this first appear? 2.055 beta? Probably related to https://github.com/D-Programming-Language/phobos/pull/126.
Comment #3 by dsimcha — 2011-09-05T19:23:22Z
(In reply to comment #2) > When did this first appear? 2.055 beta? Probably related to > https://github.com/D-Programming-Language/phobos/pull/126. Yes, in the second 2.055 beta. It probably is related to the pull you suggest, because it wasn't in the first beta, but it was in the second.
Comment #4 by k.hara.pg — 2011-09-06T00:04:34Z