|
|
|
@ -510,7 +510,10 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
@@ -510,7 +510,10 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
|
|
|
|
|
// Test whether argument passing mode matches the parameter passing mode
|
|
|
|
|
for (int i = 0; i < arguments.Length; i++) { |
|
|
|
|
int parameterIndex = candidate.ArgumentToParameterMap[i]; |
|
|
|
|
if (parameterIndex < 0) continue; |
|
|
|
|
if (parameterIndex < 0) { |
|
|
|
|
candidate.ArgumentConversions[i] = Conversion.None; |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ByReferenceResolveResult brrr = arguments[i] as ByReferenceResolveResult; |
|
|
|
|
if (brrr != null) { |
|
|
|
@ -528,7 +531,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
@@ -528,7 +531,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
|
|
|
|
|
if (!(c == Conversion.IdentityConversion || c == Conversion.ImplicitReferenceConversion || c == Conversion.BoxingConversion)) |
|
|
|
|
candidate.AddError(OverloadResolutionErrors.ArgumentTypeMismatch); |
|
|
|
|
} else { |
|
|
|
|
if (!c.IsValid) |
|
|
|
|
if (!c.IsValid && parameterType.Kind != TypeKind.Unknown) |
|
|
|
|
candidate.AddError(OverloadResolutionErrors.ArgumentTypeMismatch); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -753,7 +756,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
@@ -753,7 +756,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
|
|
|
|
|
if (bestCandidate != null && bestCandidate.ArgumentConversions != null) |
|
|
|
|
return bestCandidate.ArgumentConversions; |
|
|
|
|
else |
|
|
|
|
return new Conversion[arguments.Length]; |
|
|
|
|
return Enumerable.Repeat(Conversion.None, arguments.Length).ToList(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|