Feature request: Optional, simplified syntax for simple contracts
TommiT
tommitissari at hotmail.com
Mon Jun 17 22:41:06 PDT 2013
On Tuesday, 18 June 2013 at 05:27:57 UTC, deadalnix wrote:
> On Saturday, 15 June 2013 at 21:45:16 UTC, TommiT wrote:
>> "Simple things should be simple, complex things should be
>> possible." -Alan Kay
>>
>> I'd like to simplify the syntax of function pre- and
>> post-conditions when the contract block consists of a single
>> assert statement. A special syntax for this special case would
>> omit all of the following:
>> 1) the block's curly braces
>> 2) the assert keyword
>> 3) the semi-colon ending the assert statement
>> 4) the body keyword (if and only if it follows right after the
>> block)
>>
>> So, instead of writing this:
>>
>> int func(int i)
>> in
>> {
>> assert(i < 5);
>> }
>> out(r)
>> {
>> assert(r < 9);
>> }
>> body
>> {
>> return i * 2;
>> }
>>
>> ...you'd be able to write this:
>>
>> int func(int i)
>> in (i < 5)
>> out(r) (r < 9)
>> {
>> return i * 2;
>> }
>
> I'd rather reserve this kind of syntax for static contract
> checking or something similar.
Isn't signature constraint (the if clause) good enough for all
static contract checking purposes?
More information about the Digitalmars-d
mailing list