Fix overload resolution issue in dmd bug 313/314 fix.

This commit is contained in:
Christian Kamm
2009-05-16 12:17:33 +02:00
parent 62e8384da0
commit 53c3ac0313
13 changed files with 74 additions and 53 deletions

View File

@@ -369,6 +369,7 @@ AliasDeclaration::AliasDeclaration(Loc loc, Identifier *id, Type *type)
#endif
this->overnext = NULL;
this->inSemantic = 0;
this->importprot = PROTundefined;
assert(type);
}
@@ -501,15 +502,16 @@ void AliasDeclaration::semantic(Scope *sc)
FuncDeclaration *f = s->toAlias()->isFuncDeclaration();
if (f)
{
FuncAliasDeclaration *fa = new FuncAliasDeclaration(f);
fa->importprot = importprot;
if (overnext)
{
FuncAliasDeclaration *fa = new FuncAliasDeclaration(f);
if (!fa->overloadInsert(overnext))
ScopeDsymbol::multiplyDefined(0, f, overnext);
overnext = NULL;
s = fa;
s->parent = sc->parent;
}
s = fa;
s->parent = sc->parent;
}
if (overnext)
ScopeDsymbol::multiplyDefined(0, s, overnext);