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();