Mercurial > projects > ddmd
diff dmd/ArrayInitializer.d @ 127:9ee9b55452cb
Identifiers, Initializers -> Vector
author | Eldar Insafutdinov <e.insafutdinov@gmail.com> |
---|---|
date | Fri, 03 Sep 2010 23:55:51 +0100 |
parents | e28b18c23469 |
children | e6e542f37b94 |
line wrap: on
line diff
--- a/dmd/ArrayInitializer.d Fri Sep 03 23:25:55 2010 +0100 +++ b/dmd/ArrayInitializer.d Fri Sep 03 23:55:51 2010 +0100 @@ -57,9 +57,9 @@ e = e.syntaxCopy(); ai.index[i] = e; - Initializer init = cast(Initializer)value.data[i]; + auto init = value[i]; init = init.syntaxCopy(); - ai.value.data[i] = cast(void*)init; + ai.value[i] = init; } return ai; } @@ -67,7 +67,7 @@ void addInit(Expression index, Initializer value) { this.index.push(index); - this.value.push(cast(void*)value); + this.value.push(value); dim = 0; type = null; } @@ -108,9 +108,9 @@ length = cast(uint)idx.toInteger(); } - val = cast(Initializer)value.data[i]; + val = value[i]; val = val.semantic(sc, t.nextOf()); - value.data[i] = cast(void*)val; + value[i] = val; length++; if (length == 0) error(loc, "array dimension overflow"); @@ -134,9 +134,8 @@ goto Laa; } - for (size_t i = 0; i < value.dim; i++) + foreach (size_t i, Initializer iz; value) { - Initializer iz = cast(Initializer)value.data[i]; if (iz) { Type t = iz.inferType(sc); @@ -153,7 +152,7 @@ Laa: /* It's possibly an associative array initializer */ - Initializer iz = cast(Initializer)value.data[0]; + Initializer iz = value[0]; Expression indexinit = index[0]; if (iz && indexinit) { @@ -221,7 +220,7 @@ if (index[i]) j = cast(uint)(index[i].toInteger()); assert(j < edim); - Initializer iz = cast(Initializer)value.data[i]; + Initializer iz = value[i]; if (!iz) goto Lno; Expression ex = iz.toExpression(); @@ -299,7 +298,7 @@ //printf("\tindex[%d] = %p, length = %u, dim = %u\n", i, idx, length, dim); assert(length < dim); - val = cast(Initializer)value.data[i]; + val = value[i]; dt = val.toDt(); if (dts.data[length]) error(loc, "duplicate initializations for index %d", length);