DIP 1009--Improve Contract Usability--Preliminary Review Round 1
Moritz Maxeiner via Digitalmars-d
digitalmars-d at puremagic.com
Thu Jun 22 06:37:42 PDT 2017
On Thursday, 22 June 2017 at 13:11:12 UTC, MysticZach wrote:
> On Thursday, 22 June 2017 at 12:54:00 UTC, MysticZach wrote:
>> On Thursday, 22 June 2017 at 10:59:18 UTC, Moritz Maxeiner
>> wrote:
>>> Again, that's not what H.S. Teoh's proposal would do. All it
>>> does is install an *implementation agnostic*, *abtract* way
>>> to specify contracts into the grammar. Whether that is
>>> lowered to assert, or anything else is an implementation
>>> detail and it certainly isn't fixed to asserts.
>>
>> Okay. Then the proposal needs to be accompanied by an explicit
>> description of how to hook into the new semantics. Which is
>> what you provided, but I suppose it would need to be exactly
>> specified. In particular, where exactly is the code for the
>> (optional) user-defined hook to be found? In a separate file,
>> maybe as indicated with a command line option, e.g.
>> `-contractsConfig=myContracts.d`?
>
> As long as one is doing this, maybe a proposal for user-defined
> `assert` should be provided too? It'd be interesting to have a
> dedicated file for user-defined assert and contract
> configuration. The core idea is to allow *everyone*, from large
> companies to individual hobbyists, to use `assert`, `in`, and
> `out`, and have it work the way they want. I would definitely
> need help writing that DIP.
Upon reflection, that is exactly what my Insister proposal is :p
The reason it's not called Asserter, btw, is that assert is a
a) a keyword, and
b) is already deeply entrenched with the concept of Errors
(bugs), in D
and that `enforce`, is also de facto established for Exceptions
(user input error),
so `insist` would then be a configurable chooser between the two.
More information about the Digitalmars-d
mailing list