sumtype: prevent ambiguity in failedGetMessage

This commit is contained in:
Paul Backus 2025-02-27 10:01:43 -05:00
parent 03f7dbab9d
commit 1d3177ff2a

View file

@ -2987,9 +2987,23 @@ version (D_Exceptions)
assert(ctResult == ElaborateCopy());
}
private enum failedGetMessage(Expected, Actual) =
"Tried to get `" ~ Expected.stringof ~ "`" ~
" but found `" ~ Actual.stringof ~ "`";
private template failedGetMessage(Expected, Actual)
{
static if (Expected.stringof == Actual.stringof)
{
enum expectedStr = __traits(fullyQualifiedName, Expected);
enum actualStr = __traits(fullyQualifiedName, Actual);
}
else
{
enum expectedStr = Expected.stringof;
enum actualStr = Actual.stringof;
}
enum failedGetMessage =
"Tried to get `" ~ expectedStr ~ "`" ~
" but found `" ~ actualStr ~ "`";
}
private template getLvalue(Flag!"try_" try_, T)
{