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