unsigned < 0

bearophile bearophileHUGS at lycos.com
Thu Feb 10 15:48:44 PST 2011


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


More information about the Digitalmars-d mailing list