I confess that I find it quite undesirable that this is no longer a single line (particularly since it makes it impossible to directly initialize the variable), but doing it in a single line would require multiple ternary operators, which obviously is ugly and error-prone. The alternative would be to do something like

    immutable message = msg.empty ? t.msg : msg;
    immutable tail = message.empty ? "." : ": " ~ message;

which I like a better, but I guess that it's a matter of taste. I just really hate having if statements being used to decide what to initialize a variable to, because it makes it impossible to make it const or immutable.