November 02, 2018 Re: usable @nogc Exceptions with Mir Runtime | ||||
---|---|---|---|---|
| ||||
Posted in reply to bauss | On Thursday, 1 November 2018 at 10:17:25 UTC, bauss wrote: > On Wednesday, 31 October 2018 at 13:56:56 UTC, 9il wrote: >> ~ is used for string concatenation in D including string compile time constant concatenation. It is better not to override it because both << and ~ can be used in the same expression. > > I see what your argument is now for it, BUT I would still have left it out because it's not idiomatic D and an alternative would have been better if you absolutely had to rely on ~ being used within the expression to combine both. > > Ex. > > try throw new MirException(stringBuf().append("Hi D", 2, "!", getData); > > Would have been a much better approach similar to how write/writeln etc. work from std.stdio. Well, added at v0.0.8 [1]. Mir Runtime formatting and exceptions are CTFE-able if a msg fits into a local buffer and support user-defined types formatting. Note, that toString function must be scope const. mir.parse was added in v0.0.7. Currently, only integer types are supported. 1. https://github.com/libmir/mir-runtime/pull/2 |
November 02, 2018 Re: usable @nogc Exceptions with Mir Runtime | ||||
---|---|---|---|---|
| ||||
Posted in reply to 9il | On Friday, 2 November 2018 at 05:21:07 UTC, 9il wrote:
> On Thursday, 1 November 2018 at 10:17:25 UTC, bauss wrote:
>> [...]
>
> Well, added at v0.0.8 [1].
>
> Mir Runtime formatting and exceptions are CTFE-able if a msg fits into a local buffer and support user-defined types formatting. Note, that toString function must be scope const.
>
> mir.parse was added in v0.0.7. Currently, only integer types are supported.
>
> 1. https://github.com/libmir/mir-runtime/pull/2
Thanks!
|
November 02, 2018 Re: usable @nogc Exceptions with Mir Runtime | ||||
---|---|---|---|---|
| ||||
Posted in reply to Oleg | On Tue, Oct 30, 2018 at 9:30 AM Oleg via Digitalmars-d-announce <digitalmars-d-announce@puremagic.com> wrote: > > Thanks for your work! > > > Example > > ======================= > > /// > > @safe pure nothrow @nogc > > unittest > > { > > import mir.exception; > > import mir.format; > > try throw new MirException(stringBuf() << "Hi D" << 2 << > > "!" << getData); > > catch(Exception e) assert(e.msg == "Hi D2!"); > > } > > > > ======================= > > I don't understand why you choose C++ format style instead of D-style format? Perhaps this is a stupid question... but there's clearly `new MirException` right there in that code. How is this @nogc? |
November 02, 2018 Re: usable @nogc Exceptions with Mir Runtime | ||||
---|---|---|---|---|
| ||||
Posted in reply to Manu | On Friday, 2 November 2018 at 07:00:49 UTC, Manu wrote: > On Tue, Oct 30, 2018 at 9:30 AM Oleg via Digitalmars-d-announce <digitalmars-d-announce@puremagic.com> wrote: >> >> Thanks for your work! >> >> > Example >> > ======================= >> > /// >> > @safe pure nothrow @nogc >> > unittest >> > { >> > import mir.exception; >> > import mir.format; >> > try throw new MirException(stringBuf() << "Hi D" << 2 << >> > "!" << getData); >> > catch(Exception e) assert(e.msg == "Hi D2!"); >> > } >> > >> > ======================= >> >> I don't understand why you choose C++ format style instead of D-style format? > > Perhaps this is a stupid question... but there's clearly `new > MirException` right there in that code. > How is this @nogc? The code requires -dip1008 flag. Take a look into the DIP https://github.com/dlang/DIPs/blob/master/DIPs/DIP1008.md |
Copyright © 1999-2021 by the D Language Foundation