Chris Nicholson-Sauls Wrote:

> How hard would it be to do something like this: collect any local variables 
> declared in 
> the precondition into a structure, and make that structure transparently 
> available to the 
> postcondition.  So your push case above gets rewritten to something like this:
> 
>      __magic_tmp = {
>          typeof( length() ) oldLength;
>      }
>      in {
>          __magic_tmp.oldLength = length();
>      }
>      out {
>          assert(value == top());
>          assert(length == __magic_tmp.oldLength + 1);
>      }

We have so many nifty keywords in D, I can't stand against abusing them 
(contracts already do it).

     void push(T value);
     shared {
        typeof(length()) oldLength;
     }
     in {
        oldLength = length();
     }
     out {
        assert(value == top());
        assert(length == oldLength + 1);
     }

Reply via email to