On Friday, 22 July 2016 at 19:13:31 UTC, sdhdfhed wrote:
On Friday, 22 July 2016 at 14:02:03 UTC, Jonathan Marler wrote:
The __FILE__ trait seems to be used most useful for error messages.

Another usage is for testing parsers or string functions directly on the source. E.g in "devel" mode the main function

void main(string[] args)
{
    version(devel)
    {
// dont mess with params, use the text in source to catch most simple bugs.
        File f = File(__FILE__, "r");
    }
    else
    {
        // load using args
    }
}

I could see him wanting it to be a relative path sometimes and an absolute one other times. By redefining it to always be absolute would solve this problem,

I'm for this, always absolute. Eventually forced by a new switch: default behavior is not changed.

Actually I realized if __FILE__ was always absolute, then all your exception messages would contain the full path of the file it was thrown from on the machine it was compiled on. This would be quite odd. Both a relative and absolute version are useful in different cases.

Reply via email to