Skip to content

Commit 1d3177f

Browse files
committed
sumtype: prevent ambiguity in failedGetMessage
1 parent 03f7dba commit 1d3177f

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

std/sumtype.d

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2987,9 +2987,23 @@ version (D_Exceptions)
29872987
assert(ctResult == ElaborateCopy());
29882988
}
29892989

2990-
private enum failedGetMessage(Expected, Actual) =
2991-
"Tried to get `" ~ Expected.stringof ~ "`" ~
2992-
" but found `" ~ Actual.stringof ~ "`";
2990+
private template failedGetMessage(Expected, Actual)
2991+
{
2992+
static if (Expected.stringof == Actual.stringof)
2993+
{
2994+
enum expectedStr = __traits(fullyQualifiedName, Expected);
2995+
enum actualStr = __traits(fullyQualifiedName, Actual);
2996+
}
2997+
else
2998+
{
2999+
enum expectedStr = Expected.stringof;
3000+
enum actualStr = Actual.stringof;
3001+
}
3002+
3003+
enum failedGetMessage =
3004+
"Tried to get `" ~ expectedStr ~ "`" ~
3005+
" but found `" ~ actualStr ~ "`";
3006+
}
29933007

29943008
private template getLvalue(Flag!"try_" try_, T)
29953009
{

0 commit comments

Comments
 (0)