www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - flag -ignore_nogc to allow breaking nogc rules during debugging

reply Timothee Cour via Digitalmars-d <digitalmars-d puremagic.com> writes:
this would make error handling trivial and solve issues such as this:

FORUM:formatted assert error messages inside nogc functions
http://forum.dlang.org/thread/CANri+EyNyrhMWGCSqZHx_vXDJFSrwhOrV=J2kaTZ6t9-upTAtg mail.gmail.com

usage:

during development:
dmd -debug -ignore_nogc other_flags foo.d
during release:
dmd other_flags foo.d

 nogc
void test(int a){

version(ignore_nogc)
  assert(a==1, text("a = ", a));
else
  assert(a==1, "a = ?");

}
Jan 10
parent reply rsw0x <anonymous anonymous.com> writes:
On Sunday, 10 January 2016 at 09:17:20 UTC, Timothee Cour wrote:
 this would make error handling trivial and solve issues such as 
 this:

 FORUM:formatted assert error messages inside nogc functions 
 http://forum.dlang.org/thread/CANri+EyNyrhMWGCSqZHx_vXDJFSrwhOrV=J2kaTZ6t9-upTAtg mail.gmail.com

 usage:

 during development:
 dmd -debug -ignore_nogc other_flags foo.d
 during release:
 dmd other_flags foo.d

  nogc
 void test(int a){

 version(ignore_nogc)
   assert(a==1, text("a = ", a));
 else
   assert(a==1, "a = ?");

 }
is there a valid reason that debug shouldn't just ignore nogc? this is also an issue with contracts iirc
Jan 10
parent reply Timothee Cour via Digitalmars-d <digitalmars-d puremagic.com> writes:
just more fine-grained control ... but either way.
having an escape away from nogc would be needed.


On Sun, Jan 10, 2016 at 1:56 AM, rsw0x via Digitalmars-d <
digitalmars-d puremagic.com> wrote:

 On Sunday, 10 January 2016 at 09:17:20 UTC, Timothee Cour wrote:

 this would make error handling trivial and solve issues such as this:

 FORUM:formatted assert error messages inside nogc functions
 http://forum.dlang.org/thread/CANri+EyNyrhMWGCSqZHx_vXDJFSrwhOrV=J2kaTZ6t9-upTAtg mail.gmail.com

 usage:

 during development:
 dmd -debug -ignore_nogc other_flags foo.d
 during release:
 dmd other_flags foo.d

  nogc
 void test(int a){

 version(ignore_nogc)
   assert(a==1, text("a = ", a));
 else
   assert(a==1, "a = ?");

 }
is there a valid reason that debug shouldn't just ignore nogc? this is also an issue with contracts iirc
Jan 10
parent Guillaume Piolat <first.last gmail.com> writes:
On Sunday, 10 January 2016 at 12:33:19 UTC, Timothee Cour wrote:
 just more fine-grained control ... but either way.
 having an escape away from nogc would be needed.
Is it a bit annoying to use, but have you aware of: http://p0nce.github.io/d-idioms/#Bypassing- nogc ?
Jan 10