diff options
Diffstat (limited to 'gcc/d/dmd/dsymbolsem.d')
-rw-r--r-- | gcc/d/dmd/dsymbolsem.d | 169 |
1 files changed, 86 insertions, 83 deletions
diff --git a/gcc/d/dmd/dsymbolsem.d b/gcc/d/dmd/dsymbolsem.d index b877828..b842dc8 100644 --- a/gcc/d/dmd/dsymbolsem.d +++ b/gcc/d/dmd/dsymbolsem.d @@ -559,19 +559,19 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor auto iexps = new Expressions(); iexps.push(ie); auto exps = new Expressions(); - for (size_t pos = 0; pos < iexps.dim; pos++) + for (size_t pos = 0; pos < iexps.length; pos++) { Lexpand1: Expression e = (*iexps)[pos]; Parameter arg = Parameter.getNth(tt.arguments, pos); arg.type = arg.type.typeSemantic(dsym.loc, sc); - //printf("[%d] iexps.dim = %d, ", pos, iexps.dim); + //printf("[%d] iexps.length = %d, ", pos, iexps.length); //printf("e = (%s %s, %s), ", Token.tochars[e.op], e.toChars(), e.type.toChars()); //printf("arg = (%s, %s)\n", arg.toChars(), arg.type.toChars()); if (e != ie) { - if (iexps.dim > nelems) + if (iexps.length > nelems) goto Lnomatch; if (e.type.implicitConvTo(arg.type)) continue; @@ -579,7 +579,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor if (auto te = e.isTupleExp()) { - if (iexps.dim - 1 + te.exps.dim > nelems) + if (iexps.length - 1 + te.exps.length > nelems) goto Lnomatch; iexps.remove(pos); @@ -598,17 +598,17 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor (*exps)[0] = ve; expandAliasThisTuples(exps, 0); - for (size_t u = 0; u < exps.dim; u++) + for (size_t u = 0; u < exps.length; u++) { Lexpand2: Expression ee = (*exps)[u]; arg = Parameter.getNth(tt.arguments, pos + u); arg.type = arg.type.typeSemantic(dsym.loc, sc); - //printf("[%d+%d] exps.dim = %d, ", pos, u, exps.dim); + //printf("[%d+%d] exps.length = %d, ", pos, u, exps.length); //printf("ee = (%s %s, %s), ", Token.tochars[ee.op], ee.toChars(), ee.type.toChars()); //printf("arg = (%s, %s)\n", arg.toChars(), arg.type.toChars()); - size_t iexps_dim = iexps.dim - 1 + exps.dim; + size_t iexps_dim = iexps.length - 1 + exps.length; if (iexps_dim > nelems) goto Lnomatch; if (ee.type.implicitConvTo(arg.type)) @@ -630,7 +630,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor } } } - if (iexps.dim < nelems) + if (iexps.length < nelems) goto Lnomatch; ie = new TupleExp(dsym._init.loc, iexps); @@ -640,7 +640,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor if (ie && ie.op == EXP.tuple) { auto te = ie.isTupleExp(); - size_t tedim = te.exps.dim; + size_t tedim = te.exps.length; if (tedim != nelems) { error(dsym.loc, "tuple of %d elements cannot be assigned to tuple of %d elements", cast(int)tedim, cast(int)nelems); @@ -1065,7 +1065,8 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor else if (auto ale = ex.isArrayLiteralExp()) { // or an array literal assigned to a `scope` variable - if (!dsym.type.nextOf().needsDestruction()) + if (global.params.useDIP1000 == FeatureState.enabled + && !dsym.type.nextOf().needsDestruction()) ale.onstack = true; } } @@ -1333,7 +1334,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor if (sc.explicitVisibility) imp.visibility = sc.visibility; - if (!imp.aliasId && !imp.names.dim) // neither a selective nor a renamed import + if (!imp.aliasId && !imp.names.length) // neither a selective nor a renamed import { ScopeDsymbol scopesym = sc.getScopesym(); @@ -1359,7 +1360,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor sc = sc.push(imp.mod); sc.visibility = imp.visibility; - for (size_t i = 0; i < imp.aliasdecls.dim; i++) + for (size_t i = 0; i < imp.aliasdecls.length; i++) { AliasDeclaration ad = imp.aliasdecls[i]; //printf("\tImport %s alias %s = %s, scope = %p\n", toPrettyChars(), aliases[i].toChars(), names[i].toChars(), ad._scope); @@ -1471,7 +1472,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor { Scope* sc2 = ad.newScope(sc); bool errors; - for (size_t i = 0; i < d.dim; i++) + for (size_t i = 0; i < d.length; i++) { Dsymbol s = (*d)[i]; s.dsymbolSemantic(sc2); @@ -1509,7 +1510,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor sc.stc &= ~(STC.auto_ | STC.scope_ | STC.static_ | STC.gshared); sc.inunion = scd.isunion ? scd : null; sc.flags = 0; - for (size_t i = 0; i < scd.decl.dim; i++) + for (size_t i = 0; i < scd.decl.length; i++) { Dsymbol s = (*scd.decl)[i]; if (auto var = s.isVarDeclaration) @@ -1627,7 +1628,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor if (agg) { ad.pMangleOverride.agg = agg; - if (pd.args.dim == 2) + if (pd.args.length == 2) { setString((*pd.args)[1]); } @@ -1668,7 +1669,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor { if (pd.ident == Id.linkerDirective) { - if (!pd.args || pd.args.dim != 1) + if (!pd.args || pd.args.length != 1) pd.error("one string argument expected for pragma(linkerDirective)"); else { @@ -1694,7 +1695,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor } else if (pd.ident == Id.lib) { - if (!pd.args || pd.args.dim != 1) + if (!pd.args || pd.args.length != 1) pd.error("string expected for library name"); else { @@ -1737,9 +1738,9 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor { if (!pd.args) pd.args = new Expressions(); - if (pd.args.dim == 0 || pd.args.dim > 2) + if (pd.args.length == 0 || pd.args.length > 2) { - pd.error(pd.args.dim == 0 ? "string expected for mangled name" + pd.error(pd.args.length == 0 ? "string expected for mangled name" : "expected 1 or 2 arguments"); pd.args.setDim(1); (*pd.args)[0] = ErrorExp.get(); // error recovery @@ -1748,7 +1749,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor } else if (pd.ident == Id.crt_constructor || pd.ident == Id.crt_destructor) { - if (pd.args && pd.args.dim != 0) + if (pd.args && pd.args.length != 0) pd.error("takes no argument"); else { @@ -1762,7 +1763,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor auto decls = ad.include(null); if (decls) { - for (size_t i = 0; i < decls.dim; ++i) + for (size_t i = 0; i < decls.length; ++i) nestedCount += recurse((*decls)[i], isCtor); } return nestedCount; @@ -1788,7 +1789,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor } else if (pd.ident == Id.printf || pd.ident == Id.scanf) { - if (pd.args && pd.args.dim != 0) + if (pd.args && pd.args.length != 0) pd.error("takes no argument"); return declarations(); } @@ -1808,7 +1809,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor if (pd.args) { const errors_save = global.startGagging(); - for (size_t i = 0; i < pd.args.dim; i++) + for (size_t i = 0; i < pd.args.length; i++) { Expression e = (*pd.args)[i]; sc = sc.startCTFE(); @@ -1822,7 +1823,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor buf.writeByte(','); buf.writestring(e.toChars()); } - if (pd.args.dim) + if (pd.args.length) buf.writeByte(')'); global.endGagging(errors_save); } @@ -1880,7 +1881,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor if (cd._scope && cd.decl) { - for (size_t i = 0; i < cd.decl.dim; i++) + for (size_t i = 0; i < cd.decl.length; i++) { Dsymbol s = (*cd.decl)[i]; s.setScope(cd._scope); @@ -1919,11 +1920,11 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor { expandTuples(te.exps); CPPNamespaceDeclaration current = ns.cppnamespace; - for (size_t d = 0; d < te.exps.dim; ++d) + for (size_t d = 0; d < te.exps.length; ++d) { auto exp = (*te.exps)[d]; auto prev = d ? current : ns.cppnamespace; - current = (d + 1) != te.exps.dim + current = (d + 1) != te.exps.length ? new CPPNamespaceDeclaration(ns.loc, exp, null) : ns; current.exp = exp; @@ -2122,7 +2123,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor return; } - if (ed.members.dim == 0) + if (ed.members.length == 0) { ed.error("enum `%s` must have at least one member", ed.toChars()); ed.errors = true; @@ -2566,15 +2567,15 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor if (global.params.ddoc.doOutput) { - tempdecl.origParameters = new TemplateParameters(tempdecl.parameters.dim); - for (size_t i = 0; i < tempdecl.parameters.dim; i++) + tempdecl.origParameters = new TemplateParameters(tempdecl.parameters.length); + for (size_t i = 0; i < tempdecl.parameters.length; i++) { TemplateParameter tp = (*tempdecl.parameters)[i]; (*tempdecl.origParameters)[i] = tp.syntaxCopy(); } } - for (size_t i = 0; i < tempdecl.parameters.dim; i++) + for (size_t i = 0; i < tempdecl.parameters.length; i++) { TemplateParameter tp = (*tempdecl.parameters)[i]; if (!tp.declareParameter(paramscope)) @@ -2586,7 +2587,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor { tempdecl.errors = true; } - if (i + 1 != tempdecl.parameters.dim && tp.isTemplateTupleParameter()) + if (i + 1 != tempdecl.parameters.length && tp.isTemplateTupleParameter()) { tempdecl.error("template tuple parameter must be last one"); tempdecl.errors = true; @@ -2596,12 +2597,12 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor /* Calculate TemplateParameter.dependent */ TemplateParameters tparams = TemplateParameters(1); - for (size_t i = 0; i < tempdecl.parameters.dim; i++) + for (size_t i = 0; i < tempdecl.parameters.length; i++) { TemplateParameter tp = (*tempdecl.parameters)[i]; tparams[0] = tp; - for (size_t j = 0; j < tempdecl.parameters.dim; j++) + for (size_t j = 0; j < tempdecl.parameters.length; j++) { // Skip cases like: X(T : T) if (i == j) @@ -2742,10 +2743,10 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor /* Different argument list lengths happen with variadic args */ - if (tm.tiargs.dim != tmix.tiargs.dim) + if (tm.tiargs.length != tmix.tiargs.length) continue; - for (size_t i = 0; i < tm.tiargs.dim; i++) + for (size_t i = 0; i < tm.tiargs.length; i++) { RootObject o = (*tm.tiargs)[i]; Type ta = isType(o); @@ -2825,7 +2826,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor printf("\tdo semantic() on template instance members '%s'\n", tm.toChars()); } Scope* sc2 = argscope.push(tm); - //size_t deferred_dim = Module.deferred.dim; + //size_t deferred_dim = Module.deferred.length; __gshared int nest; //printf("%d\n", nest); @@ -2848,7 +2849,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor * Because the members would already call Module.addDeferredSemantic() for themselves. * See Struct, Class, Interface, and EnumDeclaration.dsymbolSemantic(). */ - //if (!sc.func && Module.deferred.dim > deferred_dim) {} + //if (!sc.func && Module.deferred.length > deferred_dim) {} AggregateDeclaration ad = tm.isMember(); if (sc.func && !ad) @@ -3275,6 +3276,8 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor funcdecl.error("must return `void` for `pragma(%s)`", idStr.ptr); if (funcdecl._linkage != LINK.c && f.parameterList.length != 0) funcdecl.error("must be `extern(C)` for `pragma(%s)` when taking parameters", idStr.ptr); + if (funcdecl.isThis()) + funcdecl.error("cannot be a non-static member function for `pragma(%s)`", idStr.ptr); } if (funcdecl.overnext && funcdecl.isCsymbol()) @@ -3344,7 +3347,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor { if (!funcdecl.isStatic() || funcdecl.type.nextOf().ty != Tvoid) funcdecl.error("static constructors / destructors must be `static void`"); - if (f.arguments && f.arguments.dim) + if (f.arguments && f.arguments.length) funcdecl.error("static constructors / destructors must have empty parameter list"); // BUG: check for invalid storage classes } @@ -3451,13 +3454,13 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor goto Ldone; bool may_override = false; - for (size_t i = 0; i < cd.baseclasses.dim; i++) + for (size_t i = 0; i < cd.baseclasses.length; i++) { BaseClass* b = (*cd.baseclasses)[i]; ClassDeclaration cbd = b.type.toBasetype().isClassHandle(); if (!cbd) continue; - for (size_t j = 0; j < cbd.vtbl.dim; j++) + for (size_t j = 0; j < cbd.vtbl.length; j++) { FuncDeclaration f2 = cbd.vtbl[j].isFuncDeclaration(); if (!f2 || f2.ident != funcdecl.ident) @@ -3481,7 +3484,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor /* Find index of existing function in base class's vtbl[] to override * (the index will be the same as in cd's current vtbl[]) */ - int vi = cd.baseClass ? funcdecl.findVtblIndex(&cd.baseClass.vtbl, cast(int)cd.baseClass.vtbl.dim) : -1; + int vi = cd.baseClass ? funcdecl.findVtblIndex(&cd.baseClass.vtbl, cast(int)cd.baseClass.vtbl.length) : -1; bool doesoverride = false; switch (vi) @@ -3513,7 +3516,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor with offsets to each of the virtual bases. */ if (target.cpp.splitVBasetable && cd.classKind == ClassKind.cpp && - cd.baseClass && cd.baseClass.vtbl.dim) + cd.baseClass && cd.baseClass.vtbl.length) { /* if overriding an interface function, then this is not * introducing and don't put it in the class vtbl[] @@ -3544,7 +3547,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor * Search for first function of overload group, and insert * funcdecl into vtbl[] immediately before it. */ - funcdecl.vtblIndex = cast(int)cd.vtbl.dim; + funcdecl.vtblIndex = cast(int)cd.vtbl.length; bool found; foreach (const i, s; cd.vtbl) { @@ -3574,7 +3577,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor else { // Append to end of vtbl[] - vi = cast(int)cd.vtbl.dim; + vi = cast(int)cd.vtbl.length; cd.vtbl.push(funcdecl); funcdecl.vtblIndex = vi; } @@ -3672,7 +3675,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor * will be updated at the end of the enclosing `if` block * to point to the current (non-mixined) function. */ - auto vitmp = cast(int)cd.vtbl.dim; + auto vitmp = cast(int)cd.vtbl.length; cd.vtbl.push(fdc); fdc.vtblIndex = vitmp; } @@ -3683,7 +3686,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor * vtbl, but keep the previous (non-mixined) function as * the overriding one. */ - auto vitmp = cast(int)cd.vtbl.dim; + auto vitmp = cast(int)cd.vtbl.length; cd.vtbl.push(funcdecl); funcdecl.vtblIndex = vitmp; break; @@ -3743,7 +3746,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor { foreach (b; bcd.interfaces) { - vi = funcdecl.findVtblIndex(&b.sym.vtbl, cast(int)b.sym.vtbl.dim); + vi = funcdecl.findVtblIndex(&b.sym.vtbl, cast(int)b.sym.vtbl.length); switch (vi) { case -1: @@ -3811,7 +3814,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor { BaseClass* bc = null; Dsymbol s = null; - for (size_t i = 0; i < cd.baseclasses.dim; i++) + for (size_t i = 0; i < cd.baseclasses.length; i++) { bc = (*cd.baseclasses)[i]; s = bc.sym.search_correct(funcdecl.ident); @@ -4207,7 +4210,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor else if (!dd.isFinal()) { // reserve the dtor slot for the destructor (which we'll create later) - cldec.cppDtorVtblIndex = cast(int)cldec.vtbl.dim; + cldec.cppDtorVtblIndex = cast(int)cldec.vtbl.length; cldec.vtbl.push(dd); if (target.cpp.twoDtorInVtable) cldec.vtbl.push(dd); // deleting destructor uses a second slot @@ -4865,7 +4868,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor cldec.baseok = Baseok.start; // Expand any tuples in baseclasses[] - for (size_t i = 0; i < cldec.baseclasses.dim;) + for (size_t i = 0; i < cldec.baseclasses.length;) { auto b = (*cldec.baseclasses)[i]; b.type = resolveBase(b.type.typeSemantic(cldec.loc, sc)); @@ -4895,7 +4898,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor } // See if there's a base class as first in baseclasses[] - if (cldec.baseclasses.dim) + if (cldec.baseclasses.length) { BaseClass* b = (*cldec.baseclasses)[0]; Type tb = b.type.toBasetype(); @@ -4955,7 +4958,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor int multiClassError = cldec.baseClass is null ? 0 : 1; BCLoop: - for (size_t i = (cldec.baseClass ? 1 : 0); i < cldec.baseclasses.dim;) + for (size_t i = (cldec.baseClass ? 1 : 0); i < cldec.baseclasses.length;) { BaseClass* b = (*cldec.baseclasses)[i]; Type tb = b.type.toBasetype(); @@ -4978,7 +4981,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor " Use multiple interface inheritance and/or composition.", cldec.toPrettyChars()); multiClassError += 1; - if (tc.sym.fields.dim) + if (tc.sym.fields.length) errorSupplemental(cldec.loc,"`%s` has fields, consider making it a member of `%s`", b.type.toChars(), cldec.type.toChars()); else @@ -5087,7 +5090,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor cldec.storage_class |= cldec.baseClass.storage_class & STC.TYPECTOR; } - cldec.interfaces = cldec.baseclasses.tdata()[(cldec.baseClass ? 1 : 0) .. cldec.baseclasses.dim]; + cldec.interfaces = cldec.baseclasses.tdata()[(cldec.baseClass ? 1 : 0) .. cldec.baseclasses.length]; foreach (b; cldec.interfaces) { // If this is an interface, and it derives from a COM interface, @@ -5133,7 +5136,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor sc2.pop(); } - for (size_t i = 0; i < cldec.baseclasses.dim; i++) + for (size_t i = 0; i < cldec.baseclasses.length; i++) { BaseClass* b = (*cldec.baseclasses)[i]; Type tb = b.type.toBasetype(); @@ -5156,14 +5159,14 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor // initialize vtbl if (cldec.baseClass) { - if (cldec.classKind == ClassKind.cpp && cldec.baseClass.vtbl.dim == 0) + if (cldec.classKind == ClassKind.cpp && cldec.baseClass.vtbl.length == 0) { cldec.error("C++ base class `%s` needs at least one virtual function", cldec.baseClass.toChars()); } // Copy vtbl[] from base class - cldec.vtbl.setDim(cldec.baseClass.vtbl.dim); - memcpy(cldec.vtbl.tdata(), cldec.baseClass.vtbl.tdata(), (void*).sizeof * cldec.vtbl.dim); + cldec.vtbl.setDim(cldec.baseClass.vtbl.length); + memcpy(cldec.vtbl.tdata(), cldec.baseClass.vtbl.tdata(), (void*).sizeof * cldec.vtbl.length); cldec.vthis = cldec.baseClass.vthis; cldec.vthis2 = cldec.baseClass.vthis2; @@ -5237,7 +5240,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor cldec.members.foreachDsymbol( s => s.importAll(sc2) ); - // Note that members.dim can grow due to tuple expansion during semantic() + // Note that members.length can grow due to tuple expansion during semantic() cldec.members.foreachDsymbol( s => s.dsymbolSemantic(sc2) ); if (!cldec.determineFields()) @@ -5503,7 +5506,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor idec.baseok = Baseok.start; // Expand any tuples in baseclasses[] - for (size_t i = 0; i < idec.baseclasses.dim;) + for (size_t i = 0; i < idec.baseclasses.length;) { auto b = (*idec.baseclasses)[i]; b.type = resolveBase(b.type.typeSemantic(idec.loc, sc)); @@ -5532,7 +5535,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor goto Lancestorsdone; } - if (!idec.baseclasses.dim && sc.linkage == LINK.cpp) + if (!idec.baseclasses.length && sc.linkage == LINK.cpp) idec.classKind = ClassKind.cpp; idec.cppnamespace = sc.namespace; UserAttributeDeclaration.checkGNUABITag(idec, sc.linkage); @@ -5543,7 +5546,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor // Check for errors, handle forward references BCLoop: - for (size_t i = 0; i < idec.baseclasses.dim;) + for (size_t i = 0; i < idec.baseclasses.length;) { BaseClass* b = (*idec.baseclasses)[i]; Type tb = b.type.toBasetype(); @@ -5603,7 +5606,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor } idec.baseok = Baseok.done; - idec.interfaces = idec.baseclasses.tdata()[0 .. idec.baseclasses.dim]; + idec.interfaces = idec.baseclasses.tdata()[0 .. idec.baseclasses.length]; foreach (b; idec.interfaces) { // If this is an interface, and it derives from a COM interface, @@ -5626,7 +5629,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor if (!idec.symtab) idec.symtab = new DsymbolTable(); - for (size_t i = 0; i < idec.baseclasses.dim; i++) + for (size_t i = 0; i < idec.baseclasses.length; i++) { BaseClass* b = (*idec.baseclasses)[i]; Type tb = b.type.toBasetype(); @@ -5662,7 +5665,7 @@ private extern(C++) final class DsymbolSemanticVisitor : Visitor // Copy vtbl[] from base class if (b.sym.vtblOffset()) { - size_t d = b.sym.vtbl.dim; + size_t d = b.sym.vtbl.length; if (d > 1) { idec.vtbl.pushSlice(b.sym.vtbl[1 .. d]); @@ -6055,13 +6058,13 @@ void templateInstanceSemantic(TemplateInstance tempinst, Scope* sc, Expressions* // Store the place we added it to in target_symbol_list(_idx) so we can // remove it later if we encounter an error. Dsymbols* target_symbol_list = tempinst.appendToModuleMember(); - size_t target_symbol_list_idx = target_symbol_list ? target_symbol_list.dim - 1 : 0; + size_t target_symbol_list_idx = target_symbol_list ? target_symbol_list.length - 1 : 0; // Copy the syntax trees from the TemplateDeclaration tempinst.members = Dsymbol.arraySyntaxCopy(tempdecl.members); // resolve TemplateThisParameter - for (size_t i = 0; i < tempdecl.parameters.dim; i++) + for (size_t i = 0; i < tempdecl.parameters.length; i++) { if ((*tempdecl.parameters)[i].isTemplateThisParameter() is null) continue; @@ -6126,8 +6129,8 @@ void templateInstanceSemantic(TemplateInstance tempinst, Scope* sc, Expressions* * member has the same name as the template instance. * If so, this template instance becomes an alias for that member. */ - //printf("members.dim = %d\n", tempinst.members.dim); - if (tempinst.members.dim) + //printf("members.length = %d\n", tempinst.members.length); + if (tempinst.members.length) { Dsymbol s; if (Dsymbol.oneMembers(tempinst.members, &s, tempdecl.ident) && s) @@ -6172,7 +6175,7 @@ void templateInstanceSemantic(TemplateInstance tempinst, Scope* sc, Expressions* /* ConditionalDeclaration may introduce eponymous declaration, * so we should find it once again after semantic. */ - if (tempinst.members.dim) + if (tempinst.members.length) { Dsymbol s; if (Dsymbol.oneMembers(tempinst.members, &s, tempdecl.ident) && s) @@ -6195,7 +6198,7 @@ void templateInstanceSemantic(TemplateInstance tempinst, Scope* sc, Expressions* */ { bool found_deferred_ad = false; - for (size_t i = 0; i < Module.deferred.dim; i++) + for (size_t i = 0; i < Module.deferred.length; i++) { Dsymbol sd = Module.deferred[i]; AggregateDeclaration ad = sd.isAggregateDeclaration(); @@ -6211,7 +6214,7 @@ void templateInstanceSemantic(TemplateInstance tempinst, Scope* sc, Expressions* } } } - if (found_deferred_ad || Module.deferred.dim) + if (found_deferred_ad || Module.deferred.length) goto Laftersemantic; } @@ -6245,7 +6248,7 @@ void templateInstanceSemantic(TemplateInstance tempinst, Scope* sc, Expressions* //printf("Run semantic3 on %s\n", toChars()); tempinst.trySemantic3(sc2); - for (size_t i = 0; i < deferred.dim; i++) + for (size_t i = 0; i < deferred.length; i++) { //printf("+ run deferred semantic3 on %s\n", deferred[i].toChars()); deferred[i].semantic3(null); @@ -6288,7 +6291,7 @@ void templateInstanceSemantic(TemplateInstance tempinst, Scope* sc, Expressions* { if (!td.literal) continue; - assert(td.members && td.members.dim == 1); + assert(td.members && td.members.length == 1); s = (*td.members)[0]; } if (auto fld = s.isFuncLiteralDeclaration()) @@ -6322,7 +6325,7 @@ void templateInstanceSemantic(TemplateInstance tempinst, Scope* sc, Expressions* //printf("deferred semantic3 of %p %s, ti = %s, ti.deferred = %p\n", this, toChars(), ti.toChars()); for (size_t i = 0;; i++) { - if (i == ti.deferred.dim) + if (i == ti.deferred.length) { ti.deferred.push(tempinst); break; @@ -6553,7 +6556,7 @@ void aliasSemantic(AliasDeclaration ds, Scope* sc) // Selective imports are allowed to alias to the same name `import mod : sym=sym`. if (!ds._import) { - if (tident.ident is ds.ident && !tident.idents.dim) + if (tident.ident is ds.ident && !tident.idents.length) { error(ds.loc, "`alias %s = %s;` cannot alias itself, use a qualified name to create an overload set", ds.ident.toChars(), tident.ident.toChars()); @@ -6958,7 +6961,7 @@ private TupleDeclaration aliasAssignInPlace(Scope* sc, TemplateInstance tempinst private TemplateInstance isAliasSeq(Scope* sc, TypeInstance ti) { auto tovers = ti.tempinst.tempdecl.isOverloadSet(); - foreach (size_t oi; 0 .. tovers ? tovers.a.dim : 1) + foreach (size_t oi; 0 .. tovers ? tovers.a.length : 1) { Dsymbol dstart = tovers ? tovers.a[oi] : ti.tempinst.tempdecl; int r = overloadApply(dstart, (Dsymbol s) @@ -6994,7 +6997,7 @@ bool determineFields(AggregateDeclaration ad) if (ad.sizeok != Sizeok.none) return true; - //printf("determineFields() %s, fields.dim = %d\n", toChars(), fields.dim); + //printf("determineFields() %s, fields.length = %d\n", toChars(), fields.length); // determineFields can be called recursively from one of the fields's v.semantic ad.fields.setDim(0); @@ -7046,7 +7049,7 @@ bool determineFields(AggregateDeclaration ad) if (ad.members) { - for (size_t i = 0; i < ad.members.dim; i++) + for (size_t i = 0; i < ad.members.length; i++) { auto s = (*ad.members)[i]; if (s.apply(&func, ad)) @@ -7123,12 +7126,12 @@ private CallExp doAtomicOp (string op, Identifier var, Expression arg) */ PINLINE evalPragmaInline(Loc loc, Scope* sc, Expressions* args) { - if (!args || args.dim == 0) + if (!args || args.length == 0) return PINLINE.default_; - if (args && args.dim > 1) + if (args && args.length > 1) { - .error(loc, "one boolean expression expected for `pragma(inline)`, not %llu", cast(ulong) args.dim); + .error(loc, "one boolean expression expected for `pragma(inline)`, not %llu", cast(ulong) args.length); args.setDim(1); (*args)[0] = ErrorExp.get(); } |