From bea56215c1367a3cedb38715526b9bf15daefce5 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Fri, 10 Aug 2018 03:58:23 +0200 Subject: [PATCH 1/2] dtemplate Tuple, add a ctor taking num elements --- src/dmd/dtemplate.d | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/dmd/dtemplate.d b/src/dmd/dtemplate.d index e1e0ab3db632..a03737f22a90 100644 --- a/src/dmd/dtemplate.d +++ b/src/dmd/dtemplate.d @@ -476,6 +476,17 @@ extern (C++) final class Tuple : RootObject { Objects objects; + extern (D) this() {} + + /** + * Params: + * numObjects = The initial number of objects. + */ + extern (D) this(size_t numObjects) + { + objects.setDim(numObjects); + } + // kludge for template.isType() override DYNCAST dyncast() const { @@ -1151,11 +1162,10 @@ extern (C++) final class TemplateDeclaration : ScopeDsymbol /* The extra initial template arguments * now form the tuple argument. */ - auto t = new Tuple(); + auto t = new Tuple(ntargs - n); assert(parameters.dim); (*dedargs)[parameters.dim - 1] = t; - t.objects.setDim(ntargs - n); for (size_t i = 0; i < t.objects.dim; i++) { t.objects[i] = (*tiargs)[n + i]; @@ -3727,8 +3737,7 @@ MATCH deduceType(RootObject o, Scope* sc, Type tparam, TemplateParameters* param else { // Create new tuple - auto tup = new Tuple(); - tup.objects.setDim(tuple_dim); + auto tup = new Tuple(tuple_dim); for (size_t i = 0; i < tuple_dim; i++) { Parameter arg = Parameter.getNth(t.parameters, nfparams - 1 + i); @@ -3905,9 +3914,8 @@ MATCH deduceType(RootObject o, Scope* sc, Type tparam, TemplateParameters* param /* Create tuple from remaining args */ - auto vt = new Tuple(); size_t vtdim = (tempdecl.isVariadic() ? t.tempinst.tiargs.dim : t.tempinst.tdtypes.dim) - i; - vt.objects.setDim(vtdim); + auto vt = new Tuple(vtdim); for (size_t k = 0; k < vtdim; k++) { RootObject o; From 292345b9b1843d0952f54620b4b7b4421b44e5e0 Mon Sep 17 00:00:00 2001 From: Mike Franklin Date: Sun, 12 Aug 2018 18:55:42 +0900 Subject: [PATCH 2/2] Update DDoc header in detemplate.d to follow the Style Guide --- src/dmd/dtemplate.d | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dmd/dtemplate.d b/src/dmd/dtemplate.d index a03737f22a90..638599da2e80 100644 --- a/src/dmd/dtemplate.d +++ b/src/dmd/dtemplate.d @@ -479,9 +479,9 @@ extern (C++) final class Tuple : RootObject extern (D) this() {} /** - * Params: - * numObjects = The initial number of objects. - */ + Params: + numObjects = The initial number of objects. + */ extern (D) this(size_t numObjects) { objects.setDim(numObjects);