Mercurial > projects > ddmd
diff dmd/TemplateDeclaration.d @ 79:43073c7c7769
updated to 2.035
also implemented a few missing functions
still crashes in Import.importAll though
author | Trass3r |
---|---|
date | Mon, 30 Aug 2010 03:57:51 +0200 |
parents | 7e0d548de9e6 |
children | b17640f0e4e8 |
line wrap: on
line diff
--- a/dmd/TemplateDeclaration.d Sun Aug 29 14:39:08 2010 +0100 +++ b/dmd/TemplateDeclaration.d Mon Aug 30 03:57:51 2010 +0200 @@ -34,6 +34,7 @@ import dmd.Tuple; import dmd.TupleDeclaration; import dmd.Initializer; +import dmd.Json; import dmd.ExpInitializer; import dmd.TemplateValueParameter; import dmd.AliasDeclaration; @@ -327,6 +328,36 @@ assert(false); } + override void toJsonBuffer(OutBuffer buf) + { + //writef("TemplateDeclaration.toJsonBuffer()\n"); + + buf.writestring("{\n"); + + JsonProperty(buf, Pname, toChars()); + JsonProperty(buf, Pkind, kind()); + if (comment) + JsonProperty(buf, Pcomment, comment); + + if (loc.linnum) + JsonProperty(buf, Pline, loc.linnum); + + JsonString(buf, Pmembers); + buf.writestring(" : [\n"); + size_t offset = buf.offset; + foreach (Dsymbol s; members) + { + if (offset != buf.offset) + { buf.writestring(","); + offset = buf.offset; + } + s.toJsonBuffer(buf); + } + buf.writestring("]\n"); + + buf.writestring("}\n"); + } + override string kind() { return (onemember && onemember.isAggregateDeclaration()) @@ -624,7 +655,8 @@ int fvarargs; // function varargs scope Objects dedtypes = new Objects(); // for T:T*, the dedargs is the T*, dedtypes is the T - static if (false) { + static if (false) + { printf("\nTemplateDeclaration.deduceFunctionTemplateMatch() %s\n", toChars()); for (i = 0; i < fargs.dim; i++) { @@ -650,7 +682,8 @@ TemplateTupleParameter tp = isVariadic(); - static if (false) { + static if (false) + { for (i = 0; i < dedargs.dim; i++) { printf("\tdedarg[%d] = ", i); @@ -663,11 +696,10 @@ nargsi = 0; if (targsi) - { // Set initial template arguments - size_t n; - + { + // Set initial template arguments nargsi = targsi.dim; - n = parameters.dim; + size_t n = parameters.dim; if (tp) n--; if (nargsi > n) @@ -714,7 +746,8 @@ goto Lnomatch; } } - static if (false) { + static if (false) + { for (i = 0; i < dedargs.dim; i++) { printf("\tdedarg[%d] = ", i); @@ -750,7 +783,7 @@ */ if (tp) // if variadic { - if (nfparams == 0) // if no function parameters + if (nfparams == 0 && nfargs != 0) // if no function parameters { Tuple t = new Tuple(); //printf("t = %p\n", t);