April 19, 2004
From: http://www.digitalmars.com/d/pretod.html

>	8.  	 Assert function file and line number information:
>
> The C Preprocessor Way
>        #define assert(e)       ((e) || _assert(__LINE__, __FILE__))

My understanding is that in D there is no equivelant of __FILE__ or __LINE__ because assert has somthing like that built in.

I am acustomed to using __FILE__ and __LINE__ in C to define a "log" macro that looks a bit like:

#define log(severiry, message, ...) _log_real (__FILE__, __LINE__, severity,
message, ##args)

This lets me see where a log message comes from.

I also have somthing like:

#define my_assert(expr) (void){ if (!expr) _handle_assert(#expr, __FILE__,
__LINE__) }

.. then in _handle_assert I dump some state info and the assert mesasge into a file (and sometimes email it back to base from a customer site).

I am impressed by D's attention to addressing quality issues (DBC, unit testing etc) but feel that the ability to have custom error handling and logging infrastructure with line file:line information is essential to ensuring quality.

Will D provide some mechanism for building a customised assert in future?

Sam