Mercurial > projects > ddmd
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;