diff dmd/cast.c @ 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 e961851fb8be
children 8026319762be
line wrap: on
line diff
--- a/dmd/cast.c	Fri May 15 17:17:20 2009 +0200
+++ b/dmd/cast.c	Sat May 16 12:17:33 2009 +0200
@@ -523,7 +523,7 @@
 	{
 	    ve = (VarExp *)e1;
 	    f = ve->var->isFuncDeclaration();
-	    if (f && f->overloadExactMatch(t->next))
+	    if (f && f->overloadExactMatch(t->next, m))
 		result = MATCHexact;
 	}
     }
@@ -552,7 +552,7 @@
 	    t->ty == Tpointer && t->next->ty == Tfunction)
 	{
 	    f = var->isFuncDeclaration();
-	    if (f && f->overloadExactMatch(t->next))
+	    if (f && f->overloadExactMatch(t->next, m))
 		result = MATCHexact;
 	}
     }
@@ -579,7 +579,7 @@
 	if (type->ty == Tdelegate && type->nextOf()->ty == Tfunction &&
 	    t->ty == Tdelegate && t->nextOf()->ty == Tfunction)
 	{
-	    if (func && func->overloadExactMatch(t->nextOf()))
+	    if (func && func->overloadExactMatch(t->nextOf(), m))
 		result = MATCHexact;
 	}
     }
@@ -975,7 +975,7 @@
 	    f = ve->var->isFuncDeclaration();
 	    if (f)
 	    {
-		f = f->overloadExactMatch(tb->next);
+		f = f->overloadExactMatch(tb->next, m);
 		if (f)
 		{
 		    e = new VarExp(loc, f);
@@ -1099,7 +1099,7 @@
 	    f = var->isFuncDeclaration();
 	    if (f)
 	    {
-		f = f->overloadExactMatch(tb->next);
+		f = f->overloadExactMatch(tb->next, m);
 		if (f)
 		{
 		    e = new SymOffExp(loc, f, 0);
@@ -1136,7 +1136,7 @@
 	{
 	    if (func)
 	    {
-		f = func->overloadExactMatch(tb->next);
+		f = func->overloadExactMatch(tb->next, m);
 		if (f)
 		{   int offset;
 		    if (f->tintro && f->tintro->next->isBaseOf(f->type->next, &offset) && offset)