option -ignore_pure for temporary debugging (or how to wrap an unpure function inside a pure one)?
Seb
seb at wilzba.ch
Thu Feb 8 03:44:40 UTC 2018
On Thursday, 8 February 2018 at 03:29:54 UTC, Timothee Cour wrote:
> while hacking into druntime and adding temporary debug
> information (eg with custom logging etc) I had a hard time
> making things compile because lots of functions are pure
> nothrow safe, resulting in compile errors when my custom
> debugging functions are not pure nothrow safe.
>
>
> How about adding flags ` -ignore_pure` (and perhaps
> -ignore_safe -ignore_nothrow) to allow code to compile ignoring
> safe, pure, nothrow mismatches?
>
> This would be meant for temporary debugging obviously,
> production code would not enable these flags.
>
> my workaround for nothrow and safe attributes is to call via
> wrapNothrow!fun:
>
> @trusted
> nothrow auto wrapNothrow(alias fun, T...)(T a){
> import std.exception;
> try{
> return fun(a);
> }
> catch(Exception t){
> assert(0, t.msg);
> }
> }
>
> What would be a workaround to wrap a non-pure function?
This comes up every 2-3 months - we really need a better solution.
-> assumeNogc:
https://forum.dlang.org/post/kvacxfalxqtoumatxtsx@forum.dlang.org
Other threads:
https://forum.dlang.org/post/eiifgqvoimbtkgcwfiiy@forum.dlang.org
We really need better out-of-the-box solutions for this. There's
debug, which already allows impure code in pure code.
It should be possible to use `debug` in same way for `@nogc`,
`@safe` and `nothrow`.
More information about the Digitalmars-d
mailing list