From b227b618ee7d7fd631466345333ce05e4b5ac0a5 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Fri, 26 Mar 2010 19:00:08 +0000 Subject: [PATCH] bugzilla 4011 Incorrect function overloading using mixins --- src/declaration.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/declaration.c b/src/declaration.c index 91739e602863..9f04a757f8e7 100644 --- a/src/declaration.c +++ b/src/declaration.c @@ -560,6 +560,18 @@ int AliasDeclaration::overloadInsert(Dsymbol *s) */ //printf("AliasDeclaration::overloadInsert('%s')\n", s->toChars()); + if (aliassym) // see test/test56.d + { + Dsymbol *a = aliassym->toAlias(); + FuncDeclaration *f = a->isFuncDeclaration(); + if (f) // BUG: what if it's a template? + { + FuncAliasDeclaration *fa = new FuncAliasDeclaration(f); + aliassym = fa; + return fa->overloadInsert(s); + } + } + if (overnext == NULL) { if (s == this)