# HG changeset patch # User Eldar Insafutdinov # Date 1283089015 -3600 # Node ID ad4792a1cfd69ee41a6cfd7ca362a8b146cf5597 # Parent 7e0d548de9e6523906080425f8cf913a4ed291bd more D-ification container accessing diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/AddrExp.d --- a/dmd/AddrExp.d Sun Aug 29 09:43:40 2010 +0100 +++ b/dmd/AddrExp.d Sun Aug 29 14:36:55 2010 +0100 @@ -162,9 +162,8 @@ { OverExp eo = cast(OverExp)e1; FuncDeclaration f = null; - for (int i = 0; i < eo.vars.a.dim; i++) + foreach(Dsymbol s; eo.vars.a) { - Dsymbol s = cast(Dsymbol)eo.vars.a.data[i]; FuncDeclaration f2 = s.isFuncDeclaration(); assert(f2); if (f2.overloadExactMatch(t.nextOf())) @@ -221,9 +220,8 @@ { OverExp eo = cast(OverExp)e1; FuncDeclaration f = null; - for (int i = 0; i < eo.vars.a.dim; i++) + foreach(Dsymbol s; eo.vars.a) { - Dsymbol s = cast(Dsymbol)eo.vars.a.data[i]; FuncDeclaration f2 = s.isFuncDeclaration(); assert(f2); if (f2.overloadExactMatch(t.nextOf())) diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/AggregateDeclaration.d --- a/dmd/AggregateDeclaration.d Sun Aug 29 09:43:40 2010 +0100 +++ b/dmd/AggregateDeclaration.d Sun Aug 29 14:36:55 2010 +0100 @@ -198,11 +198,8 @@ if (members) { sc = sc.push(this); - for (size_t i = 0; i < members.dim; i++) - { - Dsymbol s = cast(Dsymbol)members.data[i]; + foreach(Dsymbol s; members) s.semantic2(sc); - } sc.pop(); } } @@ -215,11 +212,8 @@ if (members) { sc = sc.push(this); - for (i = 0; i < members.dim; i++) - { - Dsymbol s = cast(Dsymbol)members.data[i]; + foreach(Dsymbol s; members) s.semantic3(sc); - } sc.pop(); } } @@ -231,9 +225,8 @@ //printf("AggregateDeclaration.inlineScan(%s)\n", toChars()); if (members) { - for (i = 0; i < members.dim; i++) + foreach(Dsymbol s; members) { - Dsymbol s = cast(Dsymbol)members.data[i]; //printf("inline scan aggregate symbol '%s'\n", s.toChars()); s.inlineScan(); } @@ -417,19 +410,18 @@ return null; case 1: - return cast(FuncDeclaration)dtors.data[0]; + return cast(FuncDeclaration)dtors[0]; default: e = null; - for (size_t i = 0; i < dtors.dim; i++) + foreach(FuncDeclaration fd; dtors) { - FuncDeclaration fd = cast(FuncDeclaration)dtors.data[i]; Expression ex = new ThisExp(Loc(0)); ex = new DotVarExp(Loc(0), ex, fd, 0); ex = new CallExp(Loc(0), ex); e = Expression.combine(ex, e); } - DtorDeclaration dd = new DtorDeclaration(Loc(0), Loc(0), Lexer.idPool("__aggrDtor")); + auto dd = new DtorDeclaration(Loc(0), Loc(0), Lexer.idPool("__aggrDtor")); dd.fbody = new ExpStatement(Loc(0), e); members.push(dd); dd.semantic(sc); diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/AnonDeclaration.d --- a/dmd/AnonDeclaration.d Sun Aug 29 09:43:40 2010 +0100 +++ b/dmd/AnonDeclaration.d Sun Aug 29 14:36:55 2010 +0100 @@ -83,10 +83,8 @@ aad.structalign = sc.structalign; aad.parent = ad; - for (uint i = 0; i < decl.dim; i++) + foreach(Dsymbol s; decl) { - Dsymbol s = cast(Dsymbol)decl.data[i]; - s.semantic(sc); if (isunion) sc.offset = 0; diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/Array.d --- a/dmd/Array.d Sun Aug 29 09:43:40 2010 +0100 +++ b/dmd/Array.d Sun Aug 29 14:36:55 2010 +0100 @@ -184,27 +184,38 @@ class Vector(T) { public: - @property final uint dim() + @property final size_t dim() { return _dim; } - + + @property final size_t length() const + { + return _dim; + } +/* Doesn't work due to compiler BUG + @property final size_t opDollar() const + { + return _dim; + } +*/ +/* @property T *data() { return _data; } - - @property final uint allocdim() +*/ + @property final size_t allocdim() { return _allocdim; } - T opIndex(uint index) + T opIndex(size_t index) { return _data[index]; } - void opIndexAssign(T value, uint index) + void opIndexAssign(T value, size_t index) { _data[index] = value; } @@ -222,7 +233,7 @@ _data[_dim++] = elem; } - final void reserve(uint nentries) + final void reserve(size_t nentries) { //printf("Array::reserve: size = %d, offset = %d, nbytes = %d\n", size, offset, nbytes); if (allocdim - dim < nentries) { @@ -252,7 +263,7 @@ return a; } - final void setDim(uint newdim) + final void setDim(size_t newdim) { if (dim < newdim) { reserve(newdim - dim); @@ -265,7 +276,7 @@ { int result = 0; - for (int i = 0; i < _dim; i++) + for (size_t i = 0; i < _dim; i++) { result = dg(_data[i]); if (result) @@ -274,10 +285,10 @@ return result; } - int opApply(scope int delegate(ref int key, ref T value) dg) + int opApply(scope int delegate(ref size_t key, ref T value) dg) { int result = 0; - for (int i = 0; i < _dim; i++) + for (size_t i = 0; i < _dim; i++) { result = dg(i, _data[i]); if(result) @@ -291,7 +302,7 @@ insert(dim, a); } - final void insert(uint index, Vector!T a) + final void insert(size_t index, Vector!T a) { if (a !is null) { uint d = a.dim; @@ -307,6 +318,6 @@ } private: T* _data = null; - uint _dim = 0; - uint _allocdim = 0; + size_t _dim = 0; + size_t _allocdim = 0; } \ No newline at end of file diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/AttribDeclaration.d --- a/dmd/AttribDeclaration.d Sun Aug 29 09:43:40 2010 +0100 +++ b/dmd/AttribDeclaration.d Sun Aug 29 14:36:55 2010 +0100 @@ -34,12 +34,6 @@ { foreach(s; d) m |= s.addMember(sc, sd, m | memnum); -/* for (uint i = 0; i < d.dim; i++) - { - auto s = d[i]; - m |= s.addMember(sc, sd, m | memnum); - } - */ } return m; @@ -63,11 +57,8 @@ newsc.explicitProtection = explicitProtection; newsc.structalign = structalign; } - for (uint i = 0; i < decl.dim; i++) - { - Dsymbol s = cast(Dsymbol)decl.data[i]; + foreach(Dsymbol s; decl) s.setScope(newsc); // yes, the only difference from semanticNewSc() - } if (newsc != sc) { sc.offset = newsc.offset; @@ -94,11 +85,8 @@ newsc.explicitProtection = explicitProtection; newsc.structalign = structalign; } - for (uint i = 0; i < decl.dim; i++) - { - Dsymbol s = cast(Dsymbol)decl.data[i]; + foreach(Dsymbol s; decl) s.semantic(newsc); - } if (newsc != sc) { sc.offset = newsc.offset; diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/CallExp.d --- a/dmd/CallExp.d Sun Aug 29 09:43:40 2010 +0100 +++ b/dmd/CallExp.d Sun Aug 29 14:36:55 2010 +0100 @@ -613,9 +613,8 @@ { OverExp eo = cast(OverExp)e1; FuncDeclaration ff = null; - for (int j = 0; j < eo.vars.a.dim; j++) + foreach(Dsymbol s; eo.vars.a) { - Dsymbol s = cast(Dsymbol)eo.vars.a.data[j]; FuncDeclaration f2 = s.isFuncDeclaration(); if (f2) { @@ -643,7 +642,7 @@ /* No overload matches, just set ff and rely on error * message being generated later. */ - ff = cast(FuncDeclaration)eo.vars.a.data[0]; + ff = cast(FuncDeclaration)eo.vars.a[0]; } e1 = new VarExp(loc, ff); goto Lagain; diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/ClassDeclaration.d --- a/dmd/ClassDeclaration.d Sun Aug 29 09:43:40 2010 +0100 +++ b/dmd/ClassDeclaration.d Sun Aug 29 14:36:55 2010 +0100 @@ -581,11 +581,8 @@ { interfaceSemantic(sc); - for (i = 0; i < members.dim; i++) - { - Dsymbol s = cast(Dsymbol)members.data[i]; + foreach(Dsymbol s; members) s.addMember(sc, this, true); - } /* If this is a nested class, add the hidden 'this' * member which is a pointer to the enclosing scope. @@ -695,11 +692,8 @@ Scope scsave = sc; /// a copy must be created? int members_dim = members.dim; sizeok = 0; - for (i = 0; i < members_dim; i++) - { - Dsymbol s = cast(Dsymbol)members.data[i]; + foreach(Dsymbol s; members) s.semantic(sc); - } if (sizeok == 2) { // semantic() failed because of forward references. @@ -833,10 +827,8 @@ buf.writenl(); buf.writeByte('{'); buf.writenl(); - for (int i = 0; i < members.dim; i++) + foreach(Dsymbol s; members) { - Dsymbol s = cast(Dsymbol)members.data[i]; - buf.writestring(" "); s.toCBuffer(buf, hgs); } @@ -955,9 +947,8 @@ OverloadSet os = s.isOverloadSet(); if (os) { - for (int i = 0; i < os.a.dim; i++) + foreach(Dsymbol s2; os.a) { - Dsymbol s2 = cast(Dsymbol)os.a.data[i]; FuncDeclaration f2 = s2.isFuncDeclaration(); if (f2 && overloadApply(f2, &p.isf, &p)) return false; @@ -1212,13 +1203,8 @@ scclass = SCcomdat; // Put out the members - for (i = 0; i < members.dim; i++) - { - Dsymbol member; - - member = cast(Dsymbol)members.data[i]; + foreach(Dsymbol member; members) member.toObjFile(0); - } static if (false) { // Build destructor by aggregating dtors[] @@ -1405,9 +1391,8 @@ { if (cd.members) { - for (size_t j = 0; j < cd.members.dim; j++) + foreach(Dsymbol sm; cd.members) { - Dsymbol sm = cast(Dsymbol)cd.members.data[j]; //printf("sm = %s %s\n", sm.kind(), sm.toChars()); if (sm.hasPointers()) goto L2; diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/ConditionalDeclaration.d --- a/dmd/ConditionalDeclaration.d Sun Aug 29 09:43:40 2010 +0100 +++ b/dmd/ConditionalDeclaration.d Sun Aug 29 14:36:55 2010 +0100 @@ -107,10 +107,8 @@ buf.writenl(); if (decl) { - for (uint i = 0; i < decl.dim; i++) + foreach (Dsymbol s; decl) { - Dsymbol s = cast(Dsymbol)decl.data[i]; - buf.writestring(" "); s.toCBuffer(buf, hgs); } @@ -123,10 +121,8 @@ buf.writenl(); buf.writeByte('{'); buf.writenl(); - for (uint i = 0; i < elsedecl.dim; i++) + foreach (Dsymbol s; elsedecl) { - Dsymbol s = cast(Dsymbol)elsedecl.data[i]; - buf.writestring(" "); s.toCBuffer(buf, hgs); } diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/DeclarationExp.d --- a/dmd/DeclarationExp.d Sun Aug 29 09:43:40 2010 +0100 +++ b/dmd/DeclarationExp.d Sun Aug 29 14:36:55 2010 +0100 @@ -59,7 +59,7 @@ if (ad) { if (ad.decl && ad.decl.dim == 1) - s = cast(Dsymbol)ad.decl.data[0]; + s = ad.decl[0]; } if (s.isVarDeclaration()) diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/EnumDeclaration.d --- a/dmd/EnumDeclaration.d Sun Aug 29 09:43:40 2010 +0100 +++ b/dmd/EnumDeclaration.d Sun Aug 29 14:36:55 2010 +0100 @@ -161,9 +161,9 @@ error("enum %s must have at least one member", toChars()); int first = 1; Expression elast = null; - for (int i = 0; i < members.dim; i++) + foreach (Dsymbol s; members) { - EnumMember em = (cast(Dsymbol)members.data[i]).isEnumMember(); + EnumMember em = s.isEnumMember(); Expression e; if (!em) @@ -326,9 +326,9 @@ buf.writenl(); buf.writeByte('{'); buf.writenl(); - for (i = 0; i < members.dim; i++) + foreach(Dsymbol s; members) { - EnumMember em = (cast(Dsymbol)members.data[i]).isEnumMember(); + EnumMember em = s.isEnumMember(); if (!em) continue; //buf.writestring(" "); diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/FuncDeclaration.d --- 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; diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/InterfaceDeclaration.d --- a/dmd/InterfaceDeclaration.d Sun Aug 29 09:43:40 2010 +0100 +++ b/dmd/InterfaceDeclaration.d Sun Aug 29 14:36:55 2010 +0100 @@ -222,11 +222,8 @@ protection = sc.protection; storage_class |= sc.stc & STC.STC_TYPECTOR; - for (i = 0; i < members.dim; i++) - { - Dsymbol s = cast(Dsymbol)members.data[i]; + foreach(Dsymbol s; members) s.addMember(sc, this, true); - } sc = sc.push(this); sc.stc &= ~(STC.STCfinal | STC.STCauto | STC.STCscope | STC.STCstatic | @@ -241,11 +238,8 @@ structalign = sc.structalign; sc.offset = PTRSIZE * 2; inuse++; - for (i = 0; i < members.dim; i++) - { - Dsymbol s = cast(Dsymbol)members.data[i]; + foreach(Dsymbol s; members) s.semantic(sc); - } inuse--; //members.print(); sc.pop(); @@ -368,11 +362,8 @@ scclass = SCcomdat; // Put out the members - for (i = 0; i < members.dim; i++) + foreach(Dsymbol member; members) { - Dsymbol member; - - member = cast(Dsymbol)members.data[i]; if (!member.isFuncDeclaration()) member.toObjFile(0); } diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/LinkDeclaration.d --- a/dmd/LinkDeclaration.d Sun Aug 29 09:43:40 2010 +0100 +++ b/dmd/LinkDeclaration.d Sun Aug 29 14:36:55 2010 +0100 @@ -50,11 +50,8 @@ LINK linkage_save = sc.linkage; sc.linkage = linkage; - for (uint i = 0; i < decl.dim; i++) - { - Dsymbol s = cast(Dsymbol)decl.data[i]; + foreach(Dsymbol s; decl) s.semantic3(sc); - } sc.linkage = linkage_save; } else diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/Module.d --- a/dmd/Module.d Sun Aug 29 09:43:40 2010 +0100 +++ b/dmd/Module.d Sun Aug 29 14:36:55 2010 +0100 @@ -709,17 +709,12 @@ * If this works out well, it can be extended to all modules * before any semantic() on any of them. */ - for (i = 0; i < members.dim; i++) - { - Dsymbol s = cast(Dsymbol)members.data[i]; + foreach(Dsymbol s; members) s.setScope(sc); - } // Pass 1 semantic routines: do public side of the definition - for (i = 0; i < members.dim; i++) + foreach (Dsymbol s; members) { - Dsymbol s = cast(Dsymbol)members.data[i]; - //writef("\tModule('%s'): '%s'.semantic()\n", toChars(), s.toChars()); s.semantic(sc); runDeferredSemantic(); @@ -756,11 +751,8 @@ //printf("Module = %p\n", sc.scopesym); // Pass 2 semantic routines: do initializers and function bodies - for (int i = 0; i < members.dim; i++) - { - Dsymbol s = cast(Dsymbol)members.data[i]; + foreach(Dsymbol s; members) s.semantic2(sc); - } sc = sc.pop(); sc.pop(); @@ -783,9 +775,8 @@ //printf("Module = %p\n", sc.scopesym); // Pass 3 semantic routines: do initializers and function bodies - for (int i = 0; i < members.dim; i++) + foreach(Dsymbol s; members) { - Dsymbol s = cast(Dsymbol)members.data[i]; //printf("Module %s: %s.semantic3()\n", toChars(), s.toChars()); s.semantic3(sc); } @@ -810,9 +801,8 @@ // gets imported, it is unaffected by context. //printf("Module = %p\n", sc.scopesym); - for (i = 0; i < members.dim; i++) + foreach(Dsymbol s; members) { - Dsymbol s = cast(Dsymbol)members.data[i]; //if (global.params.verbose) //printf("inline scan symbol %s\n", s.toChars()); s.inlineScan(); @@ -931,11 +921,8 @@ covb = cast(uint*)GC.calloc(((numlines + 32) / 32) * (*covb).sizeof); } - for (int i = 0; i < members.dim; i++) - { - Dsymbol member = cast(Dsymbol)members.data[i]; + foreach(Dsymbol member; members) member.toObjFile(multiobj); - } if (global.params.cov) { @@ -1470,10 +1457,8 @@ ClassDeclarations aclasses = new ClassDeclarations(); //printf("members.dim = %d\n", members.dim); - for (int i = 0; i < members.dim; i++) + foreach(Dsymbol member; members) { - Dsymbol member = cast(Dsymbol)members.data[i]; - //printf("\tmember '%s'\n", member.toChars()); member.addLocalClass(aclasses); } diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/Parser.d --- a/dmd/Parser.d Sun Aug 29 09:43:40 2010 +0100 +++ b/dmd/Parser.d Sun Aug 29 14:36:55 2010 +0100 @@ -3218,9 +3218,8 @@ { Statements as = new Statements(); as.reserve(a.dim); - for (int i = 0; i < a.dim; i++) + foreach(Dsymbol d; a) { - Dsymbol d = cast(Dsymbol)a.data[i]; s = new DeclarationStatement(loc, d); as.push(cast(void*)s); } @@ -3228,7 +3227,7 @@ } else if (a.dim == 1) { - Dsymbol d = cast(Dsymbol)a.data[0]; + auto d = a[0]; s = new DeclarationStatement(loc, d); } else diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/PragmaDeclaration.d --- a/dmd/PragmaDeclaration.d Sun Aug 29 09:43:40 2010 +0100 +++ b/dmd/PragmaDeclaration.d Sun Aug 29 14:36:55 2010 +0100 @@ -181,11 +181,8 @@ if (decl) { - for (uint i = 0; i < decl.dim; i++) - { - Dsymbol s = cast(Dsymbol)decl.data[i]; + foreach(Dsymbol s; decl) s.semantic(sc); - } } return; diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/ScopeDsymbol.d --- a/dmd/ScopeDsymbol.d Sun Aug 29 09:43:40 2010 +0100 +++ b/dmd/ScopeDsymbol.d Sun Aug 29 14:36:55 2010 +0100 @@ -115,7 +115,7 @@ a = new OverloadSet(); /* Don't add to a[] if s2 is alias of previous sym */ - foreach (int j, Dsymbol s3; a.a) + foreach (size_t j, Dsymbol s3; a.a) { if (s2.toAlias() == s3.toAlias()) { diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/StaticIfDeclaration.d --- a/dmd/StaticIfDeclaration.d Sun Aug 29 09:43:40 2010 +0100 +++ b/dmd/StaticIfDeclaration.d Sun Aug 29 14:36:55 2010 +0100 @@ -68,12 +68,8 @@ addisdone = 1; } - for (uint i = 0; i < d.dim; i++) - { - Dsymbol s = cast(Dsymbol)d.data[i]; - + foreach(Dsymbol s; d) s.semantic(sc); - } } } diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/StructDeclaration.d --- a/dmd/StructDeclaration.d Sun Aug 29 09:43:40 2010 +0100 +++ b/dmd/StructDeclaration.d Sun Aug 29 14:36:55 2010 +0100 @@ -148,9 +148,8 @@ if (sizeok == 0) // if not already done the addMember step { int hasfunctions = 0; - for (i = 0; i < members.dim; i++) + foreach(Dsymbol s; members) { - Dsymbol s = cast(Dsymbol)members.data[i]; //printf("adding member '%s' to '%s'\n", s.toChars(), this.toChars()); s.addMember(sc, this, true); if (s.isFuncDeclaration()) @@ -202,9 +201,8 @@ sc2.explicitProtection = 0; int members_dim = members.dim; - for (i = 0; i < members_dim; i++) + foreach(Dsymbol s; members) { - Dsymbol s = cast(Dsymbol)members.data[i]; s.semantic(sc2); if (isUnionDeclaration()) sc2.offset = 0; @@ -615,12 +613,12 @@ return null; case 1: - return cast(FuncDeclaration)postblits.data[0]; + return cast(FuncDeclaration)postblits[0]; default: e = null; - for (size_t i = 0; i < postblits.dim; i++) - { FuncDeclaration fd = cast(FuncDeclaration)postblits.data[i]; + foreach(FuncDeclaration fd; postblits) + { Expression ex = new ThisExp(Loc(0)); ex = new DotVarExp(Loc(0), ex, fd, 0); ex = new CallExp(Loc(0), ex); @@ -781,11 +779,8 @@ } // Put out the members - for (uint i = 0; i < members.dim; i++) - { - Dsymbol member = cast(Dsymbol)members.data[i]; + foreach(Dsymbol member; members) member.toObjFile(0); - } } } diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/SwitchStatement.d --- a/dmd/SwitchStatement.d Sun Aug 29 09:43:40 2010 +0100 +++ b/dmd/SwitchStatement.d Sun Aug 29 14:36:55 2010 +0100 @@ -189,10 +189,9 @@ EnumDeclaration ed = te.toDsymbol(sc).isEnumDeclaration(); assert(ed); size_t dim = ed.members.dim; - for (size_t i = 0; i < dim; i++) + foreach (Dsymbol s; ed.members) { - EnumMember em = (cast(Dsymbol)ed.members.data[i]).isEnumMember(); - if (em) + if (auto em = s.isEnumMember()) { for (size_t j = 0; j < cases.dim; j++) { diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/TemplateInstance.d --- a/dmd/TemplateInstance.d Sun Aug 29 09:43:40 2010 +0100 +++ b/dmd/TemplateInstance.d Sun Aug 29 14:36:55 2010 +0100 @@ -479,9 +479,8 @@ // parent = scope.scopesym; symtab = new DsymbolTable(); bool memnum = false; - for (int i = 0; i < members.dim; i++) + foreach(Dsymbol s; members) { - Dsymbol s = cast(Dsymbol)members.data[i]; version (LOG) { printf("\t[%d] adding member '%s' %p kind %s to '%s', memnum = %d\n", i, s.toChars(), s, s.kind(), this.toChars(), memnum); } @@ -533,9 +532,8 @@ error("recursive expansion"); fatal(); } - for (int i = 0; i < members.dim; i++) + foreach(Dsymbol s; members) { - Dsymbol s = cast(Dsymbol)members.data[i]; //printf("\t[%d] semantic on '%s' %p kind %s in '%s'\n", i, s.toChars(), s, s.kind(), this.toChars()); //printf("test: isnested = %d, sc2.parent = %s\n", isnested, sc2.parent.toChars()); // if (isnested) @@ -627,9 +625,8 @@ sc = sc.push(this); sc.tinst = this; - for (i = 0; i < members.dim; i++) + foreach(Dsymbol s; members) { - Dsymbol s = cast(Dsymbol)members.data[i]; version (LOG) { printf("\tmember '%s', kind = '%s'\n", s.toChars(), s.kind()); } @@ -660,11 +657,8 @@ sc = sc.push(argsym); sc = sc.push(this); sc.tinst = this; - for (int i = 0; i < members.dim; i++) - { - Dsymbol s = cast(Dsymbol)members.data[i]; + foreach(Dsymbol s; members) s.semantic3(sc); - } sc = sc.pop(); sc.pop(); } @@ -677,11 +671,8 @@ } if (!errors && members) { - for (int i = 0; i < members.dim; i++) - { - Dsymbol s = cast(Dsymbol)members.data[i]; + foreach(Dsymbol s; members) s.inlineScan(); - } } } @@ -798,11 +789,8 @@ obj_append(this); else { - for (int i = 0; i < members.dim; i++) - { - Dsymbol s = cast(Dsymbol)members.data[i]; + foreach(Dsymbol s; members) s.toObjFile(multiobj); - } } } } diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/TemplateMixin.d --- a/dmd/TemplateMixin.d Sun Aug 29 09:43:40 2010 +0100 +++ b/dmd/TemplateMixin.d Sun Aug 29 14:36:55 2010 +0100 @@ -274,10 +274,8 @@ declareParameters(argscope); // Add members to enclosing scope, as well as this scope - for (uint i = 0; i < members.dim; i++) - { Dsymbol s; - - s = cast(Dsymbol)members.data[i]; + foreach(size_t i, Dsymbol s; members) + { s.addMember(argscope, this, cast(bool)i); //sc.insert(s); //printf("sc.parent = %p, sc.scopesym = %p\n", sc.parent, sc.scopesym); @@ -302,11 +300,8 @@ fatal(); } - for (int i = 0; i < members.dim; i++) - { - Dsymbol s = cast(Dsymbol)members.data[i]; + foreach(Dsymbol s; members) s.semantic(sc2); - } nest--; @@ -359,9 +354,8 @@ assert(sc); sc = sc.push(argsym); sc = sc.push(this); - for (i = 0; i < members.dim; i++) + foreach(Dsymbol s; members) { - Dsymbol s = cast(Dsymbol)members.data[i]; version (LOG) { printf("\tmember '%s', kind = '%s'\n", s.toChars(), s.kind()); } @@ -389,11 +383,8 @@ { sc = sc.push(argsym); sc = sc.push(this); - for (i = 0; i < members.dim; i++) - { - Dsymbol s = cast(Dsymbol)members.data[i]; + foreach(Dsymbol s; members) s.semantic3(sc); - } sc = sc.pop(); sc.pop(); } @@ -417,9 +408,8 @@ override bool hasPointers() { //printf("TemplateMixin.hasPointers() %s\n", toChars()); - for (size_t i = 0; i < members.dim; i++) + foreach(Dsymbol s; members) { - Dsymbol s = cast(Dsymbol)members.data[i]; //printf(" s = %s %s\n", s.kind(), s.toChars()); if (s.hasPointers()) { diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/VarDeclaration.d --- a/dmd/VarDeclaration.d Sun Aug 29 09:43:40 2010 +0100 +++ b/dmd/VarDeclaration.d Sun Aug 29 14:36:55 2010 +0100 @@ -964,9 +964,8 @@ if (loc.filename) fdthis.getLevel(loc, fdv); - for (int i = 0; i < nestedrefs.dim; i++) + foreach(FuncDeclaration f; nestedrefs) { - FuncDeclaration f = cast(FuncDeclaration)nestedrefs.data[i]; if (f == fdthis) goto L1; } diff -r 7e0d548de9e6 -r ad4792a1cfd6 dmd/codegen/Util.d --- a/dmd/codegen/Util.d Sun Aug 29 09:43:40 2010 +0100 +++ b/dmd/codegen/Util.d Sun Aug 29 14:36:55 2010 +0100 @@ -708,18 +708,15 @@ //printf("%s\n", tm.toChars()); if (tm.members) { - for (size_t i = 0; i < tm.members.dim; i++) - { - Dsymbol sm = cast(Dsymbol)tm.members.data[i]; + foreach(Dsymbol sm; tm.members) e = el_combine(e, Dsymbol_toElem(sm, irs)); - } } } else if ((td = s.isTupleDeclaration()) !is null) { for (size_t i = 0; i < td.objects.dim; i++) { - Object o = cast(Object)td.objects.data[i]; + auto o = cast(Object)td.objects.data[i]; ///if (o.dyncast() == DYNCAST_EXPRESSION) if (Expression eo = cast(Expression)o) {