Improving assert-printing in DMD

Nordlöw via Digitalmars-d digitalmars-d at puremagic.com
Tue Sep 29 14:02:40 PDT 2015


As a follow-up to

https://github.com/D-Programming-Language/phobos/pull/3207#issuecomment-144073495

I starting digging in DMD for logic controlling behaviour of 
assert(), especially whether it's possible to add automatic 
printing of `lhs` and `rhs` upon assertion failure if `AssertExp` 
is a binary expression say `lhs == rhs`.

After grepping for `AssertExp` the only possible place I could 
think of was

ToElemVisitor::visit(AssertExp *ae)

inside

elem *toElem(Expression *e, IRState *irs)

in file e2ir.c.

Questions:

1. Is this the right place where this lhs-rhs-printing logic 
should be added? If so could somebody tell me how to make this 
happen?

2. Is it possible to from within DMD generate expressions that do

`import std.stdio : write`

and then calls write on the `lhs` and `rsh`...or this a 
completely wrong approach to solving this problem?


More information about the Digitalmars-d mailing list