diff dmd/TemplateDeclaration.d @ 135:af1bebfd96a4 dmd2037

dmd 2.038
author Eldar Insafutdinov <e.insafutdinov@gmail.com>
date Mon, 13 Sep 2010 22:19:42 +0100
parents 206db751bd4c
children e3afd1303184
line wrap: on
line diff
--- a/dmd/TemplateDeclaration.d	Sat Sep 11 13:03:39 2010 +0100
+++ b/dmd/TemplateDeclaration.d	Mon Sep 13 22:19:42 2010 +0100
@@ -797,21 +797,7 @@
 		}
 	}
 
-		if (fd.type)
-		{
-			assert(fd.type.ty == Tfunction);
-			TypeFunction fdtype = cast(TypeFunction)fd.type;
-			fparameters = fdtype.parameters;
-			fvarargs = fdtype.varargs;
-		}
-		else
-		{	
-			CtorDeclaration fctor = fd.isCtorDeclaration();
-			assert(fctor);
-			fparameters = fctor.arguments;
-			fvarargs = fctor.varargs;
-		}
-
+		fparameters = fd.getParameters(&fvarargs);
 		nfparams = Parameter.dim(fparameters);	// number of function parameters
 		nfargs = fargs ? fargs.dim : 0;		// number of function arguments
 
@@ -1258,7 +1244,7 @@
 		 */
 		assert(cast(size_t)cast(void*)td_best.scope_ > 0x10000);
 		ti = new TemplateInstance(loc, td_best, tdargs);
-		ti.semantic(sc);
+		ti.semantic(sc, fargs);
 		fd = ti.toAlias().isFuncDeclaration();
 		if (!fd)
 		goto Lerror;
@@ -1390,21 +1376,8 @@
         if (fd)
         {
 	        paramscope.parent = fd;
-	        Parameters fparameters;		// function parameter list
 	        int fvarargs;				// function varargs
-	        if (fd.type)
-	        {
-	            assert(fd.type.ty == Tfunction);
-	            TypeFunction fdtype = cast(TypeFunction )fd.type;
-	            fparameters = fdtype.parameters;
-	            fvarargs = fdtype.varargs;
-	        }
-	        else // Constructors don't have type's
-	        {   CtorDeclaration fctor = fd.isCtorDeclaration();
-	            assert(fctor);
-	            fparameters = fctor.arguments;
-	            fvarargs = fctor.varargs;
-	        }
+            Parameters fparameters = fd.getParameters(&fvarargs);
 	        size_t nfparams = Parameter.dim(fparameters); // Num function parameters
 	        for (int i = 0; i < nfparams; i++)
 	        {