Mercurial > projects > ddmd
diff dmd/ArrayInitializer.d @ 90:39648eb578f6
more Expressions work
author | Eldar Insafutdinov <e.insafutdinov@gmail.com> |
---|---|
date | Mon, 30 Aug 2010 20:27:56 +0100 |
parents | be2ab491772e |
children | e28b18c23469 |
line wrap: on
line diff
--- a/dmd/ArrayInitializer.d Mon Aug 30 19:58:14 2010 +0400 +++ b/dmd/ArrayInitializer.d Mon Aug 30 20:27:56 2010 +0100 @@ -129,7 +129,7 @@ type = Type.terror; for (size_t i = 0; i < value.dim; i++) { - if (index.data[i]) + if (index[i]) goto Laa; } @@ -153,7 +153,7 @@ /* It's possibly an associative array initializer */ Initializer iz = cast(Initializer)value.data[0]; - Expression indexinit = cast(Expression)index.data[0]; + Expression indexinit = index[0]; if (iz && indexinit) { Type t = iz.inferType(sc); @@ -206,19 +206,19 @@ edim = value.dim; for (size_t i = 0, j = 0; i < value.dim; i++, j++) { - if (index.data[i]) - j = cast(uint)(cast(Expression)index.data[i]).toInteger(); + if (index[i]) + j = cast(uint)(index[i].toInteger()); if (j >= edim) edim = j + 1; } } - Expressions elements = new Expressions(); + auto elements = new Expressions(); elements.setDim(edim); for (size_t i = 0, j = 0; i < value.dim; i++, j++) { - if (index.data[i]) - j = cast(uint)(cast(Expression)index.data[i]).toInteger(); + if (index[i]) + j = cast(uint)(index[i].toInteger()); assert(j < edim); Initializer iz = cast(Initializer)value.data[i]; if (!iz) @@ -237,7 +237,7 @@ Expression init = null; for (size_t i = 0; i < edim; i++) { - if (!elements.data[i]) + if (!elements[i]) { if (!type) goto Lno; @@ -292,7 +292,7 @@ Expression idx; Initializer val; - idx = cast(Expression)index.data[i]; + idx = index[i]; if (idx) length = cast(uint)idx.toInteger(); //printf("\tindex[%d] = %p, length = %u, dim = %u\n", i, idx, length, dim);