# HG changeset patch # User Eldar Insafutdinov # Date 1283554551 -3600 # Node ID 9ee9b55452cba0d1a953f3b84a600023cb5ad4bd # Parent 1765f3ef917d9f0349f438631303d8e1f4b557e1 Identifiers, Initializers -> Vector diff -r 1765f3ef917d -r 9ee9b55452cb dmd/ArrayInitializer.d --- a/dmd/ArrayInitializer.d Fri Sep 03 23:25:55 2010 +0100 +++ b/dmd/ArrayInitializer.d Fri Sep 03 23:55:51 2010 +0100 @@ -57,9 +57,9 @@ e = e.syntaxCopy(); ai.index[i] = e; - Initializer init = cast(Initializer)value.data[i]; + auto init = value[i]; init = init.syntaxCopy(); - ai.value.data[i] = cast(void*)init; + ai.value[i] = init; } return ai; } @@ -67,7 +67,7 @@ void addInit(Expression index, Initializer value) { this.index.push(index); - this.value.push(cast(void*)value); + this.value.push(value); dim = 0; type = null; } @@ -108,9 +108,9 @@ length = cast(uint)idx.toInteger(); } - val = cast(Initializer)value.data[i]; + val = value[i]; val = val.semantic(sc, t.nextOf()); - value.data[i] = cast(void*)val; + value[i] = val; length++; if (length == 0) error(loc, "array dimension overflow"); @@ -134,9 +134,8 @@ goto Laa; } - for (size_t i = 0; i < value.dim; i++) + foreach (size_t i, Initializer iz; value) { - Initializer iz = cast(Initializer)value.data[i]; if (iz) { Type t = iz.inferType(sc); @@ -153,7 +152,7 @@ Laa: /* It's possibly an associative array initializer */ - Initializer iz = cast(Initializer)value.data[0]; + Initializer iz = value[0]; Expression indexinit = index[0]; if (iz && indexinit) { @@ -221,7 +220,7 @@ if (index[i]) j = cast(uint)(index[i].toInteger()); assert(j < edim); - Initializer iz = cast(Initializer)value.data[i]; + Initializer iz = value[i]; if (!iz) goto Lno; Expression ex = iz.toExpression(); @@ -299,7 +298,7 @@ //printf("\tindex[%d] = %p, length = %u, dim = %u\n", i, idx, length, dim); assert(length < dim); - val = cast(Initializer)value.data[i]; + val = value[i]; dt = val.toDt(); if (dts.data[length]) error(loc, "duplicate initializations for index %d", length); diff -r 1765f3ef917d -r 9ee9b55452cb dmd/ArrayTypes.d --- a/dmd/ArrayTypes.d Fri Sep 03 23:25:55 2010 +0100 +++ b/dmd/ArrayTypes.d Fri Sep 03 23:55:51 2010 +0100 @@ -7,6 +7,8 @@ import dmd.BaseClass; import dmd.ClassDeclaration; import dmd.Argument; +import dmd.Identifier; +import dmd.Initializer; alias Vector!Object Objects; alias Vector!TemplateParameter TemplateParameters; @@ -14,7 +16,5 @@ alias Vector!BaseClass BaseClasses; alias Vector!ClassDeclaration ClassDeclarations; alias Vector!Argument Arguments; - -class Identifiers : Array { final typeof(this) copy() { auto a = new typeof(this); copyTo(a); return a; } } - -class Initializers : Array { final typeof(this) copy() { auto a = new typeof(this); copyTo(a); return a; } } \ No newline at end of file +alias Vector!Identifier Identifiers; +alias Vector!Initializer Initializers; \ No newline at end of file diff -r 1765f3ef917d -r 9ee9b55452cb dmd/Initializer.d --- a/dmd/Initializer.d Fri Sep 03 23:25:55 2010 +0100 +++ b/dmd/Initializer.d Fri Sep 03 23:55:51 2010 +0100 @@ -65,10 +65,10 @@ a = new Initializers(); a.setDim(ai.dim); for (int i = 0; i < a.dim; i++) - { Initializer e = cast(Initializer)ai.data[i]; + { Initializer e = ai[i]; e = e.syntaxCopy(); - a.data[i] = cast(void*) e; + a[i] = e; } } return a; diff -r 1765f3ef917d -r 9ee9b55452cb dmd/StructInitializer.d --- a/dmd/StructInitializer.d Fri Sep 03 23:25:55 2010 +0100 +++ b/dmd/StructInitializer.d Fri Sep 03 23:55:51 2010 +0100 @@ -52,18 +52,18 @@ override Initializer syntaxCopy() { - StructInitializer ai = new StructInitializer(loc); + auto ai = new StructInitializer(loc); assert(field.dim == value.dim); ai.field.setDim(field.dim); ai.value.setDim(value.dim); for (int i = 0; i < field.dim; i++) { - ai.field.data[i] = field.data[i]; + ai.field[i] = field[i]; - Initializer init = cast(Initializer)value.data[i]; + auto init = value[i]; init = init.syntaxCopy(); - ai.value.data[i] = cast(void*)init; + ai.value[i] = init; } return ai; @@ -72,8 +72,8 @@ void addInit(Identifier field, Initializer value) { //printf("StructInitializer.addInit(field = %p, value = %p)\n", field, value); - this.field.push(cast(void*)field); - this.value.push(cast(void*)value); + this.field.push(field); + this.value.push(value); } override Initializer semantic(Scope sc, Type t) @@ -93,8 +93,8 @@ ad = ts.sym; for (i = 0; i < field.dim; i++) { - Identifier id = cast(Identifier)field.data[i]; - Initializer val = cast(Initializer)value.data[i]; + Identifier id = field[i]; + Initializer val = value[i]; Dsymbol s; VarDeclaration v; @@ -137,7 +137,7 @@ if (s && (v = s.isVarDeclaration()) !is null) { val = val.semantic(sc, v.type); - value.data[i] = cast(void*)val; + value[i] = val; vars.data[i] = cast(void*)v; } else @@ -195,9 +195,9 @@ Expressions elements = new Expressions(); for (size_t i = 0; i < value.dim; i++) { - if (field.data[i]) + if (field[i]) goto Lno; - Initializer iz = cast(Initializer)value.data[i]; + Initializer iz = value[i]; if (!iz) goto Lno; Expression ex = iz.toExpression(); @@ -237,7 +237,7 @@ for (i = 0; i < vars.dim; i++) { VarDeclaration v = cast(VarDeclaration)vars.data[i]; - Initializer val = cast(Initializer)value.data[i]; + Initializer val = value[i]; //printf("vars[%d] = %s\n", i, v.toChars());