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

@@ -87,8 +87,8 @@ struct Match
FuncDeclaration *anyf; // pick a func, any func, to use for error recovery
};
void overloadResolveX(Match *m, FuncDeclaration *f, Expressions *arguments);
int overloadApply(FuncDeclaration *fstart,
void overloadResolveX(Match *m, FuncDeclaration *f, Expressions *arguments, Module* from);
int overloadApply(Module* from, FuncDeclaration *fstart,
int (*fp)(void *, FuncDeclaration *),
void *param);
@@ -220,6 +220,7 @@ struct AliasDeclaration : Declaration
Dsymbol *aliassym;
Dsymbol *overnext; // next in overload list
int inSemantic;
PROT importprot; // if generated by import, store its protection
AliasDeclaration(Loc loc, Identifier *ident, Type *type);
AliasDeclaration(Loc loc, Identifier *ident, Dsymbol *s);
@@ -670,8 +671,8 @@ struct FuncDeclaration : Declaration
int overrides(FuncDeclaration *fd);
int findVtblIndex(Array *vtbl, int dim);
int overloadInsert(Dsymbol *s);
FuncDeclaration *overloadExactMatch(Type *t);
FuncDeclaration *overloadResolve(Loc loc, Expressions *arguments);
FuncDeclaration *overloadExactMatch(Type *t, Module* from);
FuncDeclaration *overloadResolve(Loc loc, Expressions *arguments, Module* from);
LabelDsymbol *searchLabel(Identifier *ident);
AggregateDeclaration *isThis();
AggregateDeclaration *isMember2();
@@ -744,7 +745,8 @@ struct FuncDeclaration : Declaration
struct FuncAliasDeclaration : FuncDeclaration
{
FuncDeclaration *funcalias;
PROT importprot; // if generated by import, store its protection
FuncAliasDeclaration(FuncDeclaration *funcalias);
FuncAliasDeclaration *isFuncAliasDeclaration() { return this; }