Mercurial > projects > ddmd
diff dmd/NewExp.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/NewExp.d Mon Aug 30 19:58:14 2010 +0400 +++ b/dmd/NewExp.d Mon Aug 30 20:27:56 2010 +0100 @@ -347,7 +347,7 @@ break; } - Expression arg = cast(Expression)arguments.data[j]; + auto arg = arguments[j]; arg = resolveProperties(sc, arg); arg = arg.implicitCastTo(sc, Type.tsize_t); arg = arg.optimize(WANTvalue); @@ -384,23 +384,17 @@ // Optimize parameters if (newargs) { - for (size_t i = 0; i < newargs.dim; i++) + foreach (ref Expression e; newargs) { - Expression e = cast(Expression)newargs.data[i]; - e = e.optimize(WANTvalue); - newargs[i] = e; } } if (arguments) { - for (size_t i = 0; i < arguments.dim; i++) + foreach (ref Expression e; arguments) { - Expression e = cast(Expression)arguments.data[i]; - e = e.optimize(WANTvalue); - arguments[i] = e; } } return this; @@ -668,7 +662,7 @@ if (arguments.dim == 1) { // Single dimension array allocations - Expression arg = cast(Expression)arguments.data[0]; // gives array length + auto arg = arguments[0]; // gives array length e = arg.toElem(irs); ulong elemsize = tda.next.size(); @@ -681,9 +675,8 @@ { // Multidimensional array allocations e = el_long(TYint, arguments.dim); - for (size_t i = 0; i < arguments.dim; i++) + foreach (Expression arg; arguments) { - Expression arg = cast(Expression)arguments.data[i]; // gives array length e = el_param(arg.toElem(irs), e); assert(t.ty == Tarray); t = t.nextOf();