diff dmd/ArrayInitializer.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/ArrayInitializer.d	Mon Aug 30 19:58:14 2010 +0400
+++ b/dmd/ArrayInitializer.d	Mon Aug 30 20:27:56 2010 +0100
@@ -129,7 +129,7 @@
 		type = Type.terror;
 		for (size_t i = 0; i < value.dim; i++)
 		{
-			if (index.data[i])
+			if (index[i])
 				goto Laa;
 		}
 
@@ -153,7 +153,7 @@
 		/* It's possibly an associative array initializer
 	     */
 	    Initializer iz = cast(Initializer)value.data[0];
-	    Expression indexinit = cast(Expression)index.data[0];
+	    Expression indexinit = index[0];
 	    if (iz && indexinit)
 		{
 			Type t = iz.inferType(sc);
@@ -206,19 +206,19 @@
 			edim = value.dim;
 			for (size_t i = 0, j = 0; i < value.dim; i++, j++)
 			{
-				if (index.data[i])
-					j = cast(uint)(cast(Expression)index.data[i]).toInteger();
+				if (index[i])
+					j = cast(uint)(index[i].toInteger());
 				if (j >= edim)
 					edim = j + 1;
 			}
 		}
 
-		Expressions elements = new Expressions();
+		auto elements = new Expressions();
 		elements.setDim(edim);
 		for (size_t i = 0, j = 0; i < value.dim; i++, j++)
 		{
-			if (index.data[i])
-				j = cast(uint)(cast(Expression)index.data[i]).toInteger();
+			if (index[i])
+				j = cast(uint)(index[i].toInteger());
 			assert(j < edim);
 			Initializer iz = cast(Initializer)value.data[i];
 			if (!iz)
@@ -237,7 +237,7 @@
 			Expression init = null;
 			for (size_t i = 0; i < edim; i++)
 			{
-				if (!elements.data[i])
+				if (!elements[i])
 				{
 					if (!type)
 						goto Lno;
@@ -292,7 +292,7 @@
 			Expression idx;
 			Initializer val;
 
-			idx = cast(Expression)index.data[i];
+			idx = index[i];
 			if (idx)
 				length = cast(uint)idx.toInteger();
 			//printf("\tindex[%d] = %p, length = %u, dim = %u\n", i, idx, length, dim);