Mercurial > projects > ddmd
diff dmd/TemplateDeclaration.d @ 137:09c858522d55
merge
author | Trass3r |
---|---|
date | Mon, 13 Sep 2010 23:29:00 +0200 |
parents | af1bebfd96a4 |
children | e3afd1303184 |
line wrap: on
line diff
--- a/dmd/TemplateDeclaration.d Mon Sep 13 23:27:38 2010 +0200 +++ b/dmd/TemplateDeclaration.d Mon Sep 13 23:29:00 2010 +0200 @@ -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++) {