diff dmd/FuncDeclaration.d @ 77:ad4792a1cfd6

more D-ification container accessing
author Eldar Insafutdinov <e.insafutdinov@gmail.com>
date Sun, 29 Aug 2010 14:36:55 +0100
parents 7e0d548de9e6
children 43073c7c7769
line wrap: on
line diff
--- a/dmd/FuncDeclaration.d	Sun Aug 29 09:43:40 2010 +0100
+++ b/dmd/FuncDeclaration.d	Sun Aug 29 14:36:55 2010 +0100
@@ -1313,9 +1313,8 @@
 			}
 			else
 			{
-				for (int i = 0; i < add.members.dim; i++)
-				{   Dsymbol s = cast(Dsymbol)add.members.data[i];
-
+				foreach (Dsymbol s; add.members)
+				{
 				s.checkCtorConstInit();
 				}
 			}
@@ -1419,9 +1418,9 @@
 
 			// Merge in initialization of 'out' parameters
 			if (parameters)
-			{	for (size_t i = 0; i < parameters.dim; i++)
+			{	foreach (Dsymbol s; parameters)
 			{
-				VarDeclaration v = cast(VarDeclaration)parameters.data[i];
+				auto v = cast(VarDeclaration)s;
 				if (v.storage_class & STC.STCout)
 				{
 				assert(v.init);
@@ -1445,7 +1444,7 @@
 
 				Expression e1 = new VarExp(Loc(0), argptr);
 				if (parameters && parameters.dim)
-					p = cast(VarDeclaration)parameters.data[parameters.dim - 1];
+					p = cast(VarDeclaration)parameters[parameters.length - 1];
 				else
 					p = v_arguments;		// last parameter is _arguments[]
 				if (p.storage_class & STClazy)
@@ -1557,9 +1556,9 @@
 			/* Append destructor calls for parameters as finally blocks.
 			 */
 			if (parameters)
-			{	for (size_t i = 0; i < parameters.dim; i++)
+			{	foreach(Dsymbol symb; parameters)
 			{
-				VarDeclaration v = cast(VarDeclaration)parameters.data[i];
+				auto v = cast(VarDeclaration)symb;
 
 				if (v.storage_class & (STC.STCref | STC.STCout))
 				continue;
@@ -2386,7 +2385,7 @@
 			{   
 				Expression earg = cast(Expression)eargs.data[i];
 				Argument arg = Argument.getNth(tf.parameters, i);
-				VarDeclaration v = cast(VarDeclaration)parameters.data[i];
+				auto v = cast(VarDeclaration)parameters[i];
 				vsave.data[i] = cast(void*)v.value;
 version (LOG) {
 				printf("arg[%d] = %s\n", i, earg.toChars());
@@ -2432,12 +2431,12 @@
 					/* Don't restore the value of v2 upon function return
 					 */
 					assert(istate);
-					for (size_t j = 0; j < istate.vars.dim; j++)
+					foreach(size_t j, Dsymbol s2; istate.vars)// (size_t j = 0; j < istate.vars.dim; j++)
 					{   
-						VarDeclaration vd = cast(VarDeclaration)istate.vars.data[j];
+						auto vd = cast(VarDeclaration)s2;
 						if (vd == v2)
 						{	
-							istate.vars.data[j] = null;
+							istate.vars[j] = null;
 							break;
 						}
 					}
@@ -2455,12 +2454,12 @@
 		// Don't restore the value of 'this' upon function return
 		if (needThis() && thisarg.op==TOKvar) {
 			VarDeclaration thisvar = (cast(VarExp)thisarg).var.isVarDeclaration();
-			for (size_t i = 0; i < istate.vars.dim; i++)
+ 			foreach (size_t i, Dsymbol s; istate.vars)
 			{   
-				VarDeclaration v = cast(VarDeclaration)istate.vars.data[i];
+				auto v = cast(VarDeclaration)s;
 				if (v == thisvar)
 				{	
-					istate.vars.data[i] = null;
+					istate.vars[i] = null;
 					break;
 				}
 			}
@@ -2473,10 +2472,9 @@
 		{
 			//printf("saving local variables...\n");
 			valueSaves.setDim(istate.vars.dim);
-			for (size_t i = 0; i < istate.vars.dim; i++)
+			foreach (size_t i, Dsymbol s3; istate.vars)
 			{   
-				VarDeclaration v = cast(VarDeclaration)istate.vars.data[i];
-				if (v)
+				if (auto v = cast(VarDeclaration)s3)
 				{
 					//printf("\tsaving [%d] %s = %s\n", i, v.toChars(), v.value ? v.value.toChars() : "");
 					valueSaves.data[i] = cast(void*)v.value;
@@ -2515,7 +2513,7 @@
 		 */
 		for (size_t i = 0; i < dim; i++)
 		{
-			VarDeclaration v = cast(VarDeclaration)parameters.data[i];
+			auto v = cast(VarDeclaration)parameters[i];
 			v.value = cast(Expression)vsave.data[i];
 		}
 
@@ -2524,10 +2522,9 @@
 			/* Restore the variable values
 			 */
 			//printf("restoring local variables...\n");
-			for (size_t i = 0; i < istate.vars.dim; i++)
+			foreach (size_t i , Dsymbol s3; istate.vars)
 			{   
-				VarDeclaration v = cast(VarDeclaration)istate.vars.data[i];
-				if (v)
+				if (auto v = cast(VarDeclaration)s3)
 				{	
 					v.value = cast(Expression)valueSaves.data[i];
 					//printf("\trestoring [%d] %s = %s\n", i, v.toChars(), v.value ? v.value.toChars() : "");
@@ -2646,9 +2643,9 @@
 		 */
 		if (parameters)
 		{
-			for (int i = 0; i < parameters.dim; i++)
+			foreach (Dsymbol s3; parameters)
 			{
-				VarDeclaration v = cast(VarDeclaration)parameters.data[i];
+				auto v = cast(VarDeclaration)s3;
 				if (v.isOut() || v.isRef() || v.type.toBasetype().ty == Tsarray)
 					goto Lno;
 			}
@@ -2764,7 +2761,7 @@
 
 			for (int i = 0; i < arguments.dim; i++)
 			{
-				VarDeclaration vfrom = cast(VarDeclaration)parameters.data[i];
+				auto vfrom = cast(VarDeclaration)parameters[i];
 				VarDeclaration vto;
 				Expression arg = cast(Expression)arguments.data[i];
 				ExpInitializer ei;
@@ -2845,14 +2842,14 @@
 		 */
 
 		//printf("FuncDeclaration.needsClosure() %s\n", toChars());
-		for (int i = 0; i < closureVars.dim; i++)
+		foreach (Dsymbol s3; closureVars)
 		{	
-			VarDeclaration v = cast(VarDeclaration)closureVars.data[i];
+			auto v = cast(VarDeclaration)s3;
 			assert(v.isVarDeclaration());
 			//printf("\tv = %s\n", v.toChars());
 
-			for (int j = 0; j < v.nestedrefs.dim; j++)
-			{   FuncDeclaration f = cast(FuncDeclaration)v.nestedrefs.data[j];
+			foreach(FuncDeclaration f; v.nestedrefs)
+			{
 				assert(f != this);
 
 				//printf("\t\tf = %s, %d, %p, %d\n", f.toChars(), f.isVirtual(), f.isThis(), f.tookAddressOf);
@@ -2899,9 +2896,8 @@
 		 *     a stack local, allocate that local immediately following the exception
 		 *     handler block, so it is always at the same offset from EBP.
 		 */
-		for (int i = 0; i < foverrides.dim; i++)
+		foreach(FuncDeclaration fdv; foverrides) //(int i = 0; i < foverrides.dim; i++)
 		{
-			FuncDeclaration fdv = cast(FuncDeclaration)foverrides.data[i];
 			sf = fdv.mergeFrequire(sf);
 			if (fdv.frequire)
 			{
@@ -2944,9 +2940,8 @@
 		 * list for the 'this' pointer, something that would need an unknown amount
 		 * of tweaking of various parts of the compiler that I'd rather leave alone.
 		 */
-		for (int i = 0; i < foverrides.dim; i++)
+		foreach (FuncDeclaration fdv; foverrides)
 		{
-			FuncDeclaration fdv = cast(FuncDeclaration)foverrides.data[i];
 			sf = fdv.mergeFensure(sf);
 			if (fdv.fensure)
 			{
@@ -3345,9 +3340,9 @@
 		}
 		if (parameters)
 		{
-			for (i = 0; i < parameters.dim; i++)
+			foreach (size_t i, Dsymbol s3; parameters)
 			{   
-				VarDeclaration v = cast(VarDeclaration)parameters.data[i];
+				auto v = cast(VarDeclaration)s3;
 debug {
 				if (v.csym)
 					writef("parameter '%s'\n", v.toChars());
@@ -3642,9 +3637,9 @@
 			irs.sclosure = sclosure;
 
 			uint offset = PTRSIZE;	// leave room for previous sthis
-			for (int i = 0; i < closureVars.dim; i++)
+			foreach (Dsymbol s3; closureVars)
 			{   
-				VarDeclaration v = cast(VarDeclaration)closureVars.data[i];
+				auto v = cast(VarDeclaration)s3;
 				assert(v.isVarDeclaration());
 
 		version (DMDV2) {
@@ -3709,8 +3704,8 @@
 			e = el_combine(e, ex);
 
 			// Copy function parameters into closure
-			for (int i = 0; i < closureVars.dim; i++)
-			{   VarDeclaration v = cast(VarDeclaration)closureVars.data[i];
+			foreach (Dsymbol s3; closureVars)
+			{   auto v = cast(VarDeclaration)s3;
 
 				if (!v.isParameter())
 					continue;