Improving assert-printing in DMD
John Colvin via Digitalmars-d
digitalmars-d at puremagic.com
Tue Sep 29 14:13:55 PDT 2015
On Tuesday, 29 September 2015 at 21:02:42 UTC, Nordlöw wrote:
> 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?
Someone will write something like this:
assert(plainPassword == plainPassword.toLower());
and plaintext passwords will end up in stderr.
More information about the Digitalmars-d
mailing list