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