DIP 1006 - Preliminary Review Round 1
Iain Buclaw
ibuclaw at gdcproject.org
Mon Mar 5 19:53:19 UTC 2018
On Monday, 5 March 2018 at 18:44:54 UTC, Joseph Rushton Wakeling
wrote:
> On Saturday, 3 March 2018 at 16:33:00 UTC, Martin Nowak wrote:
>> Doesn't really work that way, we can disable assertions, in
>> contracts, out contracts, and invariants. But not assertions
>> in some contexts while leaving them enabled in other contexts.
>> At least not without modifying all related codegen and
>> introducing context queries (e.g. think mixin templates).
>
> That's a shame, but presumably the fine-grainedness could be
> extended at some point.
>
> Question: what would -release=assert do to unittests? Would it
> not touch them at all? Or would it disable all asserts
> including in unittests?
>
From memory, it would turn off asserts even in unittests. You
could raise a bug against gdc for that as it's a reasonable
suggestion.
>> FWIW -release=assert,in,out,invariant fits out needs well
>> enough.
>> Just the use-case that someone wants to disable asserts in
>> functions but still wants to use contracts, required to use a
>> replacement for assert in contracts and invariants.
>
> Yea, there are obviously workarounds. I think the main concern
> from my side is to not have hierarchical assumptions about what
> gets turned on or off, and AFAICS
> -release=assert,in,out-invariant pretty much fits that.
N.B: GDC has -f[no]-release, -f[no-]assert, -f[no-]invariant,
-f[no-]preconditions, and -f[no-]postconditions (-f[no-]in and
-f[no-]out were removed as they are a little too vague). And it
doesn't matter which order you pass them in, if an option is
explicitly set, then they do not get turned on/off by -frelease.
More information about the Digitalmars-d
mailing list