Mercurial > projects > ddmd
diff dmd/ArrayLiteralExp.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/ArrayLiteralExp.d Mon Aug 30 19:58:14 2010 +0400 +++ b/dmd/ArrayLiteralExp.d Mon Aug 30 20:27:56 2010 +0100 @@ -66,20 +66,16 @@ return this; // Run semantic() on each element - for (int i = 0; i < elements.dim; i++) + foreach (ref Expression e; elements) { - e = elements.data[i]; e = e.semantic(sc); assert(e.type); - elements[i] = e; } expandTuples(elements); - for (int i = 0; i < elements.dim; i++) + foreach (size_t i, Expression e; elements) { - e = cast(Expression)elements.data[i]; - if (!e.type) error("%s has no value", e.toChars()); @@ -104,10 +100,10 @@ if (!committed && e.op == TOKstring) { - StringExp se = cast(StringExp)e; + auto se = cast(StringExp)e; se.committed = 0; } - elements.data[i] = e; + elements[i] = e; } if (!t0) @@ -193,9 +189,8 @@ { bool f = false; - for (size_t i = 0; i < elements.dim; i++) + foreach (e; elements) { - Expression e = cast(Expression)elements.data[i]; f |= e.checkSideEffect(2); } if (flag == 0 && f == false) @@ -217,7 +212,7 @@ buf.printf("A%u", dim); for (size_t i = 0; i < dim; i++) { - Expression e = cast(Expression)elements.data[i]; + auto e = elements[i]; e.toMangleBuffer(buf); } } @@ -265,10 +260,9 @@ result = MATCHnomatch; } - for (int i = 0; i < elements.dim; i++) + foreach (e; elements) { - Expression e = cast(Expression)elements.data[i]; - MATCH m = cast(MATCH)e.implicitConvTo(tb.nextOf()); + auto m = cast(MATCH)e.implicitConvTo(tb.nextOf()); if (m < result) result = m; // remember worst match if (result == MATCHnomatch) @@ -334,10 +328,8 @@ d = null; pdtend = &d; - for (int i = 0; i < elements.dim; i++) + foreach (e; elements) { - Expression e = cast(Expression)elements.data[i]; - pdtend = e.toDt(pdtend); } Type t = type.toBasetype();