Recently I have shown some bugs (and added few enhancement requests): http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=129069
Among those there is my suggestion to statically disallow unsigned<0 comparisons: http://d.puremagic.com/issues/show_bug.cgi?id=5539 So that's a little change in the D2 language itself, it's not a warning as the one GCC shows on C code. Recently Iain Buclaw has shown some patches for DMD: http://d.puremagic.com/issues/show_bug.cgi?id=5490 Three cases were of unsigned < 0, like: +++ b/src/optimize.c @@ -351,7 +351,7 @@ Expression *AddrExp::optimize(int result) { TypeSArray *ts = (TypeSArray *)ve->type; dinteger_t dim = ts->dim->toInteger(); - if (index < 0 || index >= dim) + if (index >= dim) error("array index %jd is out of bounds [0..%jd]", index, dim); e = new SymOffExp(loc, ve->var, index * ts->nextOf()->size()); e->type = type; Do you like this little change in the D2 language? Bye, bearophile