diff dmd/declaration.h @ 1358:78038e540342

Fix overload resolution issue in dmd bug 313/314 fix.
author Christian Kamm <kamm incasoftware de>
date Sat, 16 May 2009 12:17:33 +0200
parents 0c03ba6f7c24
children 8026319762be
line wrap: on
line diff
--- a/dmd/declaration.h	Fri May 15 17:17:20 2009 +0200
+++ b/dmd/declaration.h	Sat May 16 12:17:33 2009 +0200
@@ -87,8 +87,8 @@
     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 @@
     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 @@
     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 FuncAliasDeclaration : FuncDeclaration
 {
     FuncDeclaration *funcalias;
-
+    PROT importprot;	// if generated by import, store its protection
+    
     FuncAliasDeclaration(FuncDeclaration *funcalias);
 
     FuncAliasDeclaration *isFuncAliasDeclaration() { return this; }