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);