DIP 1006 - Preliminary Review Round 1
Nicholas Wilson
iamthewilsonator at hotmail.com
Sun Mar 4 01:29:34 UTC 2018
On Sunday, 4 March 2018 at 00:32:20 UTC, Walter Bright wrote:
> On 4/12/2017 4:25 AM, Mike Parker wrote:
>> DIP 1006 is titled "Providing more selective control over
>> contracts".
>>
>> https://github.com/dlang/DIPs/blob/master/DIPs/DIP1006.md
>
>
> Currently, we have 3 switches that affect the asserts:
> `release`, `boundscheck`, and `unittest`. The documentation for
> these new additions is completely confusing. No mention is made
> of interactions with the latter two. No mention is made on what
> happens if more than one of these switches is used, or what if
> the same switch appears multiple times.
>
> I'd like to see a chart enumerating all the behaviors
> influenced by these switches, the default behavior, and which
> switch settings do what.
>
> Each switch, when applied, should specify what happens to each
> behavior:
>
> 1. turned on
> 2. turned off
> 3. not affected
>
> and that the switches are applied in the order they appear on
> the command line.
>
> The use of comma-separated arguments is something I've argued
> against for other switches. The use of `-release=in
> -release=out` should be fine and is less confusing/buggy to
> implement.
>
Why? Implementation is trivial (unit testable no less!) , see
https://github.com/dlang/dmd/pull/7863 and extensible to other
args.
> The idea that `-release=in` actually turns *off* `in` is
> completely topsy-turvy.
>
> Ideally, the whole thing should be simplified to its
> fundamentals:
>
> 1. leave the old switches as they are
> 2. Add a new switch, let's say "check":
>
> -check turn on all checks
> -check=on turn on all checks
> -check=off turn off all checks
> -check=xxx turn on check xxx
> -check=yyy turn on check yyy
>
> simple, easy to explain, easy to comprehend, easy to implement,
> easy to extend with new checks.
I think aggregation is a good idea. So is phrasing in the
positive sense, except for it looks like xxx and yyy are _off_ by
default, where surely we want all checks _on_ by default.
More information about the Digitalmars-d
mailing list