Getting the error from __traits(compiles, ...)

Denis Koroskin 2korden at gmail.com
Thu Nov 12 13:08:34 PST 2009


On Fri, 13 Nov 2009 00:00:42 +0300, Walter Bright  
<newshound1 at digitalmars.com> wrote:

> Walter Bright wrote:
>> Bill Baxter wrote:
>>> Any other thoughts about how to get the failure info?   This is
>>> probably the main complaint against __traits(compiles), that there's
>>> no way to find out what went wrong if the code doesn't compile.  Often
>>> it can just be a typo.  I know I've spent plenty of time looking at
>>> static if(__traits(compiles, ...)) checks that weren't working only to
>>> discover I switched an x for a y somewhere.  Or passed the wrong
>>> number of arguments.
>>  I agree it's a problem. Perhaps we can do:
>>     __traits(compiles_or_msg, ...)
>>  which would print the error messages, at least making it easier to  
>> track down.
>
> Eh, scratch that dumb idea. Just remove the __traits(compiles, ...) and  
> replace it with ..., and you'll get the message!

He was asking for a string so that it would be possible to parse and/or  
output. More like:

enum s = __traits(compiles_or_msg, ...);
static if (s.length == 0) {
    // no error
} else {
    // do stuff with error message
}



More information about the Digitalmars-d mailing list