diff dmd/TemplateInstance.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 ad4792a1cfd6
children be2ab491772e
line wrap: on
line diff
--- a/dmd/TemplateInstance.d	Sun Aug 29 14:39:08 2010 +0100
+++ b/dmd/TemplateInstance.d	Mon Aug 30 03:57:51 2010 +0200
@@ -524,7 +524,7 @@
 
 		try
 		{
-			static int nest;
+//			static int nest;
 			//printf("%d\n", nest);
 			if (++nest > 500)
 			{
@@ -578,7 +578,24 @@
 
 		if (sc.func || dosemantic3)
 		{
-			semantic3(sc2);
+			try
+			{
+//				static int nest; // TODO: 
+				if (++nest > 300)
+				{
+				global.gag = 0;			// ensure error message gets printed
+				error("recursive expansion");
+				fatal();
+				}
+				semantic3(sc2);
+				--nest;
+			}
+			catch (Exception e)
+			{
+				global.gag = 0;			// ensure error message gets printed
+				error("recursive expansion");
+				fatal();
+			}
 		}
 
 	Laftersemantic:
@@ -703,12 +720,14 @@
 	
     override Dsymbol toAlias()			// resolve real symbol
 	{
-	version (LOG) {
-		printf("TemplateInstance.toAlias()\n");
+	version (LOG)
+	{
+		writef("TemplateInstance.toAlias()\n");
 	}
 		if (!inst)
 		{	
 			error("cannot resolve forward reference");
+			errors = 1;
 			return this;
 		}