On Friday, 23 June 2017 at 21:14:47 UTC, MysticZach wrote:
On Friday, 23 June 2017 at 20:49:35 UTC, Moritz Maxeiner wrote:
...
I'm not sure what you're getting at here. With the proposal Timon implemented we have the following: - the newer, decoupled contract syntax that separates contract specification and implementation from each other; Timon's implementation uses asserts as the internal contract implementation AFAIK

Not exactly. It actually _couples_ `in` expressions with assert expressions. In essence it just lowers

int fun(int a)
in(a)
{
}

...to:

int fun(int a)
in { assert(a); }
{
}

This is a sensible default. In the future, some logic could be added to provide a hook to a different implementation of the `in` function, so that it would lower instead to:

int fun(int a)
in { __userDefinedInContract(a); }
{
}

But I suspect the vast majority will stick with the default.

I think my proposal to add another use of semicolon in parentheses, like `foreach` or `for` but not the same as either, was needlessly complicated.

in (a)
out (result) (a)

as syntax sugar where each (a) lowers to
{assert(a);}
and in future can lower to something else, to renovate contract implementation

That's so much easier, in every way.

Reply via email to