Safety/purity and assert/enforce error messages

H. S. Teoh hsteoh at quickfur.ath.cx
Thu Sep 12 12:42:34 PDT 2013


On Thu, Sep 12, 2013 at 09:12:18PM +0200, bearophile wrote:
> H. S. Teoh:
> 
> >In phobos git HEAD, std.format has been made pure @safe nothrow (and
> >CTFE-able), so you should be able to write your assert as:
> >
> >	assert(condition, format("x = %s, blahblah", x));
> 
> With the latest DMD from updated GIT head:
> 
> 
> import std.string: format;
> void main() pure nothrow {
>     string x = "hello";
>     bool condition = true;
>     assert(condition, format("x = %s, blahblah", x));
> }
> 
> 
> It gives:
> 
> test.d(5): Error: 'std.string.format!(char, string).format' is not nothrow
> test.d(2): Error: function 'D main' is nothrow yet may throw
[...]

Oops. Apparently I wrote nothrow but forgot to test it. I did test pure
and @safe, though, so at least those two should work.


T

-- 
Food and laptops don't mix.


More information about the Digitalmars-d-learn mailing list