On 04.07.2011 19:20, Zardoz wrote:
How is the correct way of mix  Pre and Post contracts and signature constraints 
?

I try this that looks logic way and not compile :

T foo (T) (T a)
if ( is(T : real)) {
  in {
        assert (a>  0);
  }
  body {
        return a*2;
  }
}

I get this errors :
Declaration expected, not 'if'
unrecognized declaration

And this with same result :

T foo (T) (T a)
in {
        assert (a>  0);
}
if ( is(T : real)) {
  body {
        return a*2;
  }
}

I'm using dmd 2.053.


The "in" should be in a block of it's own:

T foo(T)(T a)
if(...) // notice no { here
in {
} body {
}

Reply via email to