Mercurial > projects > ddmd
diff dmd/ArrayLiteralExp.d @ 84:be2ab491772e
Expressions -> Vector!Expression
author | Eldar Insafutdinov <e.insafutdinov@gmail.com> |
---|---|
date | Mon, 30 Aug 2010 16:12:19 +0100 |
parents | 2e2a5c3f943a |
children | 39648eb578f6 |
line wrap: on
line diff
--- a/dmd/ArrayLiteralExp.d Mon Aug 30 18:42:04 2010 +0400 +++ b/dmd/ArrayLiteralExp.d Mon Aug 30 16:12:19 2010 +0100 @@ -15,6 +15,7 @@ import dmd.HdrGenState; import dmd.backend.dt_t; import dmd.InlineScanState; +import dmd.Array; import dmd.ArrayTypes; import dmd.TOK; import dmd.IntegerExp; @@ -45,7 +46,7 @@ { super(loc, TOK.TOKarrayliteral, ArrayLiteralExp.sizeof); elements = new Expressions(); - elements.push(cast(void*)e); + elements.push(e); } override Expression syntaxCopy() @@ -67,10 +68,10 @@ // Run semantic() on each element for (int i = 0; i < elements.dim; i++) { - e = cast(Expression)elements.data[i]; + e = elements.data[i]; e = e.semantic(sc); assert(e.type); - elements.data[i] = cast(void*)e; + elements[i] = e; } expandTuples(elements); @@ -106,7 +107,7 @@ StringExp se = cast(StringExp)e; se.committed = 0; } - elements.data[i] = cast(void*)e; + elements.data[i] = e; } if (!t0) @@ -130,14 +131,14 @@ //printf("ArrayLiteralExp.toElem() %s\n", toChars()); if (elements) { - scope Expressions args = new Expressions(); + scope args = new Array(); // ddmd was Expressions dim = elements.dim; args.setDim(dim + 1); // +1 for number of args parameter e = el_long(TYint, dim); args.data[dim] = cast(void*)e; for (size_t i = 0; i < dim; i++) { - Expression el = cast(Expression)elements.data[i]; + auto el = elements[i]; elem* ep = el.toElem(irs); if (tybasic(ep.Ety) == TYstruct || tybasic(ep.Ety) == TYarray) @@ -230,12 +231,9 @@ { if (elements) { - for (size_t i = 0; i < elements.dim; i++) + foreach (ref Expression e; elements) { - Expression e = cast(Expression)elements.data[i]; - e = e.optimize(WANTvalue | (result & WANTinterpret)); - elements.data[i] = cast(void*)e; } } @@ -306,12 +304,10 @@ } e = cast(ArrayLiteralExp)copy(); - e.elements = cast(Expressions)elements.copy(); - for (int i = 0; i < elements.dim; i++) + e.elements = elements.copy(); + foreach (size_t i, Expression ex; elements) { - Expression ex = cast(Expression)elements.data[i]; - ex = ex.castTo(sc, tb.nextOf()); - e.elements.data[i] = cast(void*)ex; + e.elements[i] = ex.castTo(sc, tb.nextOf()); } e.type = t; return e;