Another idiom I wish were gone from phobos/druntime
Zach the Mystic via Digitalmars-d
digitalmars-d at puremagic.com
Wed Feb 4 20:36:37 PST 2015
On Thursday, 5 February 2015 at 00:43:04 UTC, Andrei Alexandrescu
wrote:
> On 2/4/15 4:37 PM, Adam D. Ruppe wrote:
>> On Thursday, 5 February 2015 at 00:35:50 UTC, bearophile wrote:
>>> Contracts can be read by tools, and they are part of the
>>> function
>>> signature. Contracts should be encouraged and increased, not
>>> discouraged.
>>
>>
>> I agree. Moreover, if the assert fails in the contract, in
>> theory, we
>> can point the error at the user's code. An assert inside the
>> function is
>> the function's responsibility. An assert in an in contract is
>> the
>> caller's responsibility. They're semantically different (even
>> if dmd
>> treats them the same way)
>
> Yah I concede this is a good point. Yet we're looking at an
> actual liability and are supposed to look at some vague
> possible future benefit. -- Andrei
I have an idea. Treat all assert statements which come before the
first non-assert statement as part of the 'in' contract. I'm not
saying the compiler has to generate a whole 'in' function, but
these asserts can be internally tagged to behave *as if* in an
'in' contract. That solves the tooling problem and the
too-much-code problem, no?
More information about the Digitalmars-d
mailing list