Fix #12
This commit is contained in:
parent
4aaa71a7d0
commit
e9f70853c6
@ -717,6 +717,8 @@ if (is(T == struct))
|
|||||||
}
|
}
|
||||||
alias fields = Filter!(pred, __traits(allMembers, T));
|
alias fields = Filter!(pred, __traits(allMembers, T));
|
||||||
|
|
||||||
|
result.insertBack(T.stringof);
|
||||||
|
result.insertBack('(');
|
||||||
static if (fields.length > 0)
|
static if (fields.length > 0)
|
||||||
{
|
{
|
||||||
printToString!"{}"(result, __traits(getMember, arg, fields[0]));
|
printToString!"{}"(result, __traits(getMember, arg, fields[0]));
|
||||||
@ -726,6 +728,7 @@ if (is(T == struct))
|
|||||||
printToString!"{}"(result, __traits(getMember, arg, field));
|
printToString!"{}"(result, __traits(getMember, arg, field));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
result.insertBack(')');
|
||||||
}
|
}
|
||||||
|
|
||||||
private void formatRange(T)(ref T arg, ref String result)
|
private void formatRange(T)(ref T arg, ref String result)
|
||||||
@ -784,7 +787,21 @@ private ref String printToString(string fmt, Args...)(return ref String result,
|
|||||||
}
|
}
|
||||||
else static if (is(Unqual!(typeof(args[0].stringify())) == String))
|
else static if (is(Unqual!(typeof(args[0].stringify())) == String))
|
||||||
{
|
{
|
||||||
result.insertBack(args[0].stringify()[]);
|
static if (is(Arg == class) || is(Arg == interface))
|
||||||
|
{
|
||||||
|
if (args[0] is null)
|
||||||
|
{
|
||||||
|
result.insertBack("null");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result.insertBack(args[0].stringify()[]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result.insertBack(args[0].stringify()[]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else static if (is(Arg == class))
|
else static if (is(Arg == class))
|
||||||
{
|
{
|
||||||
@ -796,10 +813,11 @@ private ref String printToString(string fmt, Args...)(return ref String result,
|
|||||||
}
|
}
|
||||||
else static if (is(Arg == struct))
|
else static if (is(Arg == struct))
|
||||||
{
|
{
|
||||||
result.insertBack(Arg.stringof);
|
|
||||||
result.insertBack('(');
|
|
||||||
formatStruct(args[0], result);
|
formatStruct(args[0], result);
|
||||||
result.insertBack(')');
|
}
|
||||||
|
else static if (is(Arg == union))
|
||||||
|
{
|
||||||
|
result.insertBack(Arg.stringof);
|
||||||
}
|
}
|
||||||
else static if (isFloatingPoint!Arg) // Float
|
else static if (isFloatingPoint!Arg) // Float
|
||||||
{
|
{
|
||||||
@ -983,6 +1001,26 @@ package(tanya) String format(string fmt, Args...)(auto ref Args args)
|
|||||||
assert(format!"{}"(instance.get()) == instance.get().toString());
|
assert(format!"{}"(instance.get()) == instance.get().toString());
|
||||||
assert(format!"{}"(cast(I) instance.get()) == I.classinfo.name);
|
assert(format!"{}"(cast(I) instance.get()) == I.classinfo.name);
|
||||||
assert(format!"{}"(cast(A) null) == "null");
|
assert(format!"{}"(cast(A) null) == "null");
|
||||||
|
|
||||||
|
class B
|
||||||
|
{
|
||||||
|
String stringify() @nogc nothrow pure @safe
|
||||||
|
{
|
||||||
|
return String("Class B");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
assert(format!"{}"(cast(B) null) == "null");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unions.
|
||||||
|
unittest
|
||||||
|
{
|
||||||
|
union U
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
char c;
|
||||||
|
}
|
||||||
|
assert(format!"{}"(U(2)) == "U");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ranges.
|
// Ranges.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user