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/[email protected]


Other threads: https://forum.dlang.org/post/[email protected]

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`.

Reply via email to