ModuleInfo, factories, and unittesting

Adam D. Ruppe via Digitalmars-d digitalmars-d at puremagic.com
Fri Dec 23 06:20:44 PST 2016


On Friday, 23 December 2016 at 11:21:00 UTC, Atila Neves wrote:
> The worst is how useless plain `assert` is.

I would love it, LOVE it, if assert just printed its info.

Consider the following code:

int a = 0;
int b = 1;

assert(a == b);


Wouldn't it just be glorious if that magically printed:

test.d(4): Assertion failure
     (a == b) is false
     a = 0
     b = 1



I'd also settle for it just showing the left hand and right hand 
side of the comparison.

assert((0 && 1) == b);
prints: `false == 1 failed`

but it would be REALLY nice if it printed the expression then 
recursed down and found all the various variable things and 
printed them too.

assert is built in for a reason, I thought, why then is our built 
in assert crappier than C's library assert?! Let's make it use 
the compiler's inside info. Let's make it respond accordingly to 
its environment (so like assert in contracts may be subtly 
different than in main bodies or unittests etc)


More information about the Digitalmars-d mailing list