Mercurial > projects > ldc
diff dmd2/init.c @ 1577:e4f7b5d9c68a
DMD 2.032 Merge.
author | Robert Clipsham <robert@octarineparrot.com> |
---|---|
date | Tue, 08 Sep 2009 10:07:56 +0100 |
parents | 54b3c1394d62 |
children |
line wrap: on
line diff
--- a/dmd2/init.c Tue Aug 25 21:35:43 2009 +0200 +++ b/dmd2/init.c Tue Sep 08 10:07:56 2009 +0100 @@ -412,15 +412,24 @@ case Tpointer: case Tarray: - edim = dim; - break; + edim = dim; + break; default: assert(0); } } else + { edim = value.dim; + for (size_t i = 0, j = 0; i < value.dim; i++, j++) + { + if (index.data[i]) + j = ((Expression *)index.data[i])->toInteger(); + if (j >= edim) + edim = j + 1; + } + } elements = new Expressions(); elements->setDim(edim); @@ -464,7 +473,7 @@ Lno: delete elements; error(loc, "array initializers as expressions are not allowed"); - return NULL; + return new ErrorExp(); }