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