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;