diff dmd/ArrayInitializer.d @ 127:9ee9b55452cb

Identifiers, Initializers -> Vector
author Eldar Insafutdinov <e.insafutdinov@gmail.com>
date Fri, 03 Sep 2010 23:55:51 +0100
parents e28b18c23469
children e6e542f37b94
line wrap: on
line diff
--- a/dmd/ArrayInitializer.d	Fri Sep 03 23:25:55 2010 +0100
+++ b/dmd/ArrayInitializer.d	Fri Sep 03 23:55:51 2010 +0100
@@ -57,9 +57,9 @@
 				e = e.syntaxCopy();
 			ai.index[i] = e;
 
-			Initializer init = cast(Initializer)value.data[i];
+			auto init = value[i];
 			init = init.syntaxCopy();
-			ai.value.data[i] = cast(void*)init;
+			ai.value[i] = init;
 		}
 		return ai;
 	}
@@ -67,7 +67,7 @@
     void addInit(Expression index, Initializer value)
 	{
 		this.index.push(index);
-		this.value.push(cast(void*)value);
+		this.value.push(value);
 		dim = 0;
 		type = null;
 	}
@@ -108,9 +108,9 @@
 				length = cast(uint)idx.toInteger();
 			}
 
-			val = cast(Initializer)value.data[i];
+			val = value[i];
 			val = val.semantic(sc, t.nextOf());
-			value.data[i] = cast(void*)val;
+			value[i] = val;
 			length++;
 			if (length == 0)
 				error(loc, "array dimension overflow");
@@ -134,9 +134,8 @@
 				goto Laa;
 		}
 
-		for (size_t i = 0; i < value.dim; i++)
+		foreach (size_t i, Initializer iz; value)
 		{
-			Initializer iz = cast(Initializer)value.data[i];
 			if (iz)
 			{   
 				Type t = iz.inferType(sc);
@@ -153,7 +152,7 @@
 	Laa:
 		/* It's possibly an associative array initializer
 	     */
-	    Initializer iz = cast(Initializer)value.data[0];
+	    Initializer iz = value[0];
 	    Expression indexinit = index[0];
 	    if (iz && indexinit)
 		{
@@ -221,7 +220,7 @@
 			if (index[i])
 				j = cast(uint)(index[i].toInteger());
 			assert(j < edim);
-			Initializer iz = cast(Initializer)value.data[i];
+			Initializer iz = value[i];
 			if (!iz)
 				goto Lno;
 			Expression ex = iz.toExpression();
@@ -299,7 +298,7 @@
 			//printf("\tindex[%d] = %p, length = %u, dim = %u\n", i, idx, length, dim);
 
 			assert(length < dim);
-			val = cast(Initializer)value.data[i];
+			val = value[i];
 			dt = val.toDt();
 			if (dts.data[length])
 				error(loc, "duplicate initializations for index %d", length);