Verbose checking of range category
Robert Jacques
sandford at jhu.edu
Sat Dec 11 11:42:25 PST 2010
On Sat, 11 Dec 2010 12:15:31 -0500, Andrei Alexandrescu
<SeeWebsiteForEmail at erdani.org> wrote:
[snip]
> This program will generate a valid executable, but will also print
> during compilation:
>
> Type int is not a random access range because:
> no empty property
> no front property
> no popFront method
> no indexing
> no slicing
>
> When a programmer has an odd issue with a range check, turning
> verboseness of checks could help.
>
> What do you think?
>
>
> Andrei
An issue with this is that failed template type checks are both extremely
common and expected in template code: i.e. static
if(isRandomAccessRange!T) {...}. So, you'll get a lot of spurious error
messages slowly. Add in parallel builds, and the last error message won't
even be the one you're looking for. So, while I think the concept is
usefully, I'd view this implementation as an intermediate stepping stone
at best (and a distraction from you fixing other bugs at worse). I'd
recommend, as an alternative, to have specific debug versions of the
checks, i.e. isRandomAccessRangeDebug, as a way to avoid false positives.
More information about the Digitalmars-d
mailing list