DIP 1009--Improve Contract Usability--Preliminary Review Round 2 Begins

MysticZach via Digitalmars-d digitalmars-d at puremagic.com
Fri Jul 21 21:07:26 PDT 2017


On Saturday, 22 July 2017 at 03:05:55 UTC, aberba wrote:
> How about this in current syntax? (that's what I do)
>
> int func(int a)
>     in
>     {
>         assert(a >= 0);
>     }
>     out(result)
>     {
>         assert(result >= 2);
>     }
> body
> {
>     return 2 * a;
> }
>
>
> an improvement could be:
>
> int func(int a)
>     in assert(a >= 0);
>     out(result) assert(result >= 2);
> body
> {
>     return 2 * a;
> }
>
> just like an in-line if-else statement

That was actually part of my original proposal [1]. People in 
that discussion [2] seemed more excited about the current 
proposal , and they won me over to it. If the syntax doesn't 
assume `assert`, probably 99% of contracts will use it 
explicitly, so it's really making it easier by just assuming it. 
And being allowed to omit the word `body` (now `do`) with the new 
syntax is an important feature. That said, I don't think your 
proposal is incompatible with the current one. It just might be 
made unnecessary by it.

[1] 
https://github.com/dlang/DIPs/blob/d2dc77802c74378cf4545069eced21f85fbf893f/DIPs/DIP1009.md

[2] 
http://forum.dlang.org/post/gjtsfysvtyxcfcmuutez@forum.dlang.org


More information about the Digitalmars-d mailing list