My body is ugly [Re: Contextualizing keywords]

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Mon Aug 3 07:52:18 PDT 2009


Denis Koroskin wrote:
> On Mon, 03 Aug 2009 16:22:40 +0400, Michiel Helvensteijn 
> <m.helvensteijn.remove at gmail.com> wrote:
> 
>> Denis Koroskin wrote:
>>
>>>> Then I assume you still want to restrict the precondition to being the
>>>> first element in the body? Because putting it in there suggests that it
>>>> may appear anywhere a statement can.
>>>
>>> Why not?
>>
>> Because a function precondition indicates the set of admissible states
>> before execution of a function. Emphasis on *before* and *function*.
>>
> 
> Allowing them anywhere inside a function body will only improve the 
> feature.
> 
> BTW, it is already allowed, just use 'debug' instead of 'in':
> 
> Suggested way:
> 
>> int foo(int a) {
>>    in {
>>       assert(a>2);
>>    }
>>
>>    return a-1;
>> }
> 
> My way:
> 
> int foo(int a) {
>    debug {
>       assert(a>2);
>    }
>    return a-1;
> }
> 
> TBH, I'd just drop the whole DBC feature from a language, it creates 
> more problems than solves.

I think the interesting uses are when you can e.g. specify constraints 
on an interface, inherit them, add to them in derived classes etc. What 
DbC support is in the language so far adds very little compared to debug 
and scope(success).

Andrei



More information about the Digitalmars-d mailing list