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;
(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.