Mercurial > projects > ddmd
diff dmd/InterfaceDeclaration.d @ 125:767a01c2a272
BaseClasses -> Vector
author | Eldar Insafutdinov <e.insafutdinov@gmail.com> |
---|---|
date | Fri, 03 Sep 2010 22:17:54 +0100 |
parents | 9e39c7de8438 |
children | 60bb0fe4563e |
line wrap: on
line diff
--- a/dmd/InterfaceDeclaration.d Fri Sep 03 21:39:37 2010 +0400 +++ b/dmd/InterfaceDeclaration.d Fri Sep 03 22:17:54 2010 +0100 @@ -104,7 +104,7 @@ // Expand any tuples in baseclasses[] for (size_t i = 0; i < baseclasses.dim; ) { - BaseClass b = cast(BaseClass)baseclasses.data[0]; + auto b = baseclasses[0]; b.type = b.type.semantic(loc, sc); Type tb = b.type.toBasetype(); @@ -116,7 +116,7 @@ for (size_t j = 0; j < dim; j++) { Argument arg = Argument.getNth(tup.arguments, j); b = new BaseClass(arg.type, protection); - baseclasses.insert(i + j, cast(void*)b); + baseclasses.insert(i + j, b); } } else @@ -133,7 +133,7 @@ BaseClass b; Type tb; - b = cast(BaseClass)baseclasses.data[i]; + b = baseclasses[i]; b.type = b.type.semantic(loc, sc); tb = b.type.toBasetype(); if (tb.ty == TY.Tclass) @@ -151,7 +151,7 @@ // Check for duplicate interfaces for (size_t j = 0; j < i; j++) { - BaseClass b2 = cast(BaseClass)baseclasses.data[j]; + auto b2 = baseclasses[j]; if (b2.base is tc.sym) error("inherits from duplicate interface %s", b2.base.toChars()); } @@ -188,7 +188,7 @@ } interfaces_dim = baseclasses.dim; - interfaces = cast(BaseClass*)baseclasses.data; + interfaces = baseclasses.ptr; interfaceSemantic(sc); @@ -480,9 +480,8 @@ // of the fixup (*) offset += vtblInterfaces.dim * (4 * PTRSIZE); - for (size_t i = 0; i < vtblInterfaces.dim; i++) + foreach (b; vtblInterfaces) { - BaseClass b = cast(BaseClass)vtblInterfaces.data[i]; ClassDeclaration id = b.base; // ClassInfo