On Mon, Nov 11, 2013 at 2:55 AM, Jacob Carlborg <doob@me.com> wrote:
On 2013-11-11 11:39, Timothee Cour wrote:

yes, I think your initial example becomes more interesting with this, as
in its current form it can already be done in current D.

The current example prints out the exact expression what was passed to the assert macro. Not the result of evaluating the expression. I don't see how this can currently be done in D

I'm using a modified assert that uses the ugly import(file)[line] trick, so that can be done (but is really ugly and has impact either runtime or compile time). But we're essentially in agreement.
 


This would make error messages self-documenting:

myAssert(!file.exists );
// "!file. exists" failed: dump of AST:
file: string ="foobar.d"
|_file.exists: bool = false
   |_!file. exists: bool = false

In many cases, this would be so much more useful than an out of date /
incomplete string error message, esp w a lot of variables involved.

I agree.

--
/Jacob Carlborg