On Saturday, 31 July 2021 at 08:25:56 UTC, Jeremy T. Gibson wrote:
Now, https://github.com/dlang/druntime/blob/master/src/object.d
clearly expresses that the constructors of Exception are @nogc.
Therein lies the problem: there is no way to use the ~
concatenation operator in a @nogc function. At least at my
current level of understanding of D (versus my background in C#
where this is trivial), I can't think of any other way to pass
a pure/nogc pair of strings that won't trip up the safety
parameters.
Just as a raw test case, I tried the following:
https://run.dlang.io/is/VmCKwV
`annotation()` should also be nothrow as it's called by the
nothrow constructor.
Option #1: https://run.dlang.io/is/OBNfxq
use a limited @nogc string formatter from dub, with an instance
buffer.
Option #2: https://run.dlang.io/is/Osoiyd
for such a simple format, do it manually.
Option #3: NotYetImplemented()
require the caller to call a non-@nogc function which can build a
string and then throw/return a constructed exception.