On Thursday, 5 February 2015 at 01:07:56 UTC, Andrei Alexandrescu wrote:
Yah, I agree "in" is useful for overridable functions. In fact I'd say it's useful _only_ for overridable functions.


Putting the contract in the caller is not only useful for overridable functions.

1/ If a lib is compiled in without contract, but your code is compiled with, you get the in contract to run when you call library code, but not the assert within the function.

2/ The optimizer see the properties of the argument when they get to the in contract. This information is lost in the callee, unless inlining goes on. that means the amount of contract the optimizer can remove statically is greater with in contract.

Reply via email to