Invariants for methods
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Thu Nov 18 12:16:53 PST 2010
On 11/18/10 12:08 PM, Jens Mueller wrote:
> What I'd even like better (because contracts are release specific):
> release {
> const currentWidth = width;
> const currentHeight = height;
> scope (exit) {
> assert(currentWidth == width);
> assert(currentHeight == height);
> }
> }
> But that does not work. Why do we have special syntax for debug but not for
> release. Both seem to me very similar. In the end I tend to think
> release/debug as a shorthand for version(release/debug). But that's not
> quite right. Somehow it's allowed to write version(unittest) {}
> equivalently for unittest {}. But for debug/release there is no such
> thing. Why this asymmetry?
>
> Jens
I think it's just for pragmatic reasons (avoid allocating a keyword for
something you can do a different way). Also, it's more often that you
want to insert extra code in debug builds. It's odd that you don't want
the checks in debug mode, for example.
Release-only code can be inserted with:
debug {} else {
...
}
Andrei
More information about the Digitalmars-d
mailing list