On Sat, 09 Oct 2010 15:32:26 +0400, Jonathan M Davis <jmdavisp...@gmx.com>
wrote:
On Saturday 09 October 2010 04:23:25 Denis Koroskin wrote:
On Sat, 09 Oct 2010 15:06:40 +0400, Jonathan M Davis
<jmdavisp...@gmx.com>
wrote:
> On Saturday 09 October 2010 03:47:52 Denis Koroskin wrote:
>> Why not just throw an exception and get a nice stack trace?
>
> You get a stack trace anyway with an assertion failure. And sure, they
> _could_
> make it so that the only way to output anything from a contract is to
> use an
> exception, but not only would that be more of a pain than using
> writeln(), but
> it would mean that the only time you could output anything would be on
> failure.
> As it is, you can print something every time that a contract is run.
You
> couldn't do that with an exception.
>
> - Jonathan M Davis
I could do the same within a function body.
Anyway, I don't see the discussion going anywhere, it's just a matter of
preference and I don't really mind yours.
Well, regardless of what we think and what the pros and cons of the
situation
actually are, as I understand it, the whole reason that contracts aren't
pure is
so that you can use writeln() in them for debugging.
- Jonathan M Davis
I don't thinks so, it's rather the feature isn't fully implemented yet.
For example, up until recently you couldn't throw Exceptions from
contracts, and was only be able to use asserts. That got changed because
it was an easy to violate rule (by calling some other function that
throws, e.g. enforce). Why do you think Walter disallowed throwing from
contracts (other than asserts) in first place?