std.locale
Sergey Gromov
snake.scaly at gmail.com
Tue Mar 3 07:31:31 PST 2009
Tue, 03 Mar 2009 07:05:51 -0800, Andrei Alexandrescu wrote:
> bearophile wrote:
>> Daniel Keep:
>>> So I put contracts on everything. Fantastic. I do a release compile,
>>> and all that safety disappears. So only the debug build has contracts
>>> enabled. But it's the release build, if it crashes, that I need help
>>> diagnosing.
>>
>> A simple solution is to not use -release for the final version of the code, but this keeps array bound controls too.
>> LDC may have already solved your problem, with extra compilation arguments that you can use to disable such controls independently from each other.
>> It's not a fault of design by contract, it's just that the D compiler switches are lumped together. It seems a simple to solve problem.
>>
>> Bye,
>> bearophile
>
> I agree. I'm having the same problem: I put a contract in there, I know
> it's as good as assert. So I can't do e.g. input validation because in
> most functions input must always be validated. I also know that
> contracts are doing the wrong thing with inheritance and can't apply to
> interfaces, which is exactly the (only?) place they'd be interesting. So
> I send the contracts home and use assert, enforce, and unittest.
I'd really like to see enforce() as a built-in language feature.
assert() doesn't help in way too many situations.
More information about the Digitalmars-d
mailing list