Mercurial > projects > ddmd
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++) {