optionally verbose assertions

Steven Schveighoffer schveiguy at yahoo.com
Thu Apr 14 08:47:11 PDT 2011


On Thu, 14 Apr 2011 11:28:39 -0400, spir <denis.spir at gmail.com> wrote:

> On 04/14/2011 04:03 PM, Steven Schveighoffer wrote:
>> Sometimes, I worry that my unit tests or asserts aren't running.  Every  
>> once in
>> a while, I have to change one to fail to make sure that code is  
>> compiling (this
>> is especially true when I'm doing version statements or templates).  It  
>> would
>> be nice if there was a -assertprint mode which showed asserts actually  
>> running
>> (only for the module compiled with that switch, of course).
>
> Man, I'm very pleased to read someone else advocating for optionally  
> verbose assertions.
> This could use 2 arguments instead of a predicate:
>      assert(expressions, value);
> Example use:

[snip]

I don't think we can change assert syntax now.  What I was looking was for  
something more like:

assert(x == y);

prints out

"asserting x == y: true"

for asserts that pass when you have the 'verbose assert' flag turned on.   
This should be easy to do in the compiler by just translating

assert(expr);

to something like:

auto result = evaluateAssert(expr);
print("asserting expr: ", result ? "true" : "false");
assert(result);

-Steve


More information about the Digitalmars-d mailing list