diff dmd/TupleExp.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 3482c73a991b
line wrap: on
line diff
--- a/dmd/TupleExp.d	Mon Aug 30 19:58:14 2010 +0400
+++ b/dmd/TupleExp.d	Mon Aug 30 20:27:56 2010 +0100
@@ -126,12 +126,12 @@
 			return 1;
 		if ((cast(Expression)o).op == TOKtuple)
 		{
-			TupleExp te = cast(TupleExp)o;
+			auto te = cast(TupleExp)o;
 			if (exps.dim != te.exps.dim)
 				return 0;
 			for (size_t i = 0; i < exps.dim; i++)
-			{   Expression e1 = cast(Expression)exps.data[i];
-				Expression e2 = cast(Expression)te.exps.data[i];
+			{   auto e1 = exps[i];
+				auto e2 = te.exps[i];
 
 				if (!e1.equals(e2))
 					return 0;
@@ -150,21 +150,19 @@
 			return this;
 
 		// Run semantic() on each argument
-		for (size_t i = 0; i < exps.dim; i++)
-		{	Expression e = cast(Expression)exps.data[i];
-
+		foreach (ref Expression e; exps)
+		{
 			e = e.semantic(sc);
 			if (!e.type)
 			{   error("%s has no value", e.toChars());
 				e.type = Type.terror;
 			}
-			exps[i] = e;
 		}
 
 		expandTuples(exps);
 		if (0 && exps.dim == 1)
 		{
-			return cast(Expression)exps.data[0];
+			return exps[0];
 		}
 		type = new TypeTuple(exps);
 		type = type.semantic(loc, sc);
@@ -186,8 +184,8 @@
 
 	override void checkEscape()
 	{
-		for (size_t i = 0; i < exps.dim; i++)
-		{   Expression e = cast(Expression)exps.data[i];
+		foreach(e; exps)
+		{
 			e.checkEscape();
 		}
 	}
@@ -196,9 +194,8 @@
 	{
 		bool f = false;
 
-		for (int i = 0; i < exps.dim; i++)
-		{	Expression e = cast(Expression)exps.data[i];
-
+		foreach(e; exps)
+		{
 			f |= e.checkSideEffect(2);
 		}
 		if (flag == 0 && f == 0)
@@ -208,12 +205,9 @@
 
 	override Expression optimize(int result)
 	{
-		for (size_t i = 0; i < exps.dim; i++)
+		foreach(ref Expression e; exps)
 		{   
-			Expression e = cast(Expression)exps.data[i];
-
 			e = e.optimize(WANTvalue | (result & WANTinterpret));
-			exps[i] = e;
 		}
 		return this;
 	}