Browse Source

Fix icsharpcode/NRefactory#29: NullReferenceException when using FindReferencedEntities navigator

newNRvisualizers
Daniel Grunwald 13 years ago
parent
commit
47d7d5adea
  1. 9
      ICSharpCode.NRefactory.CSharp/Resolver/OverloadResolution.cs
  2. 2
      ICSharpCode.NRefactory/Semantics/ConversionResolveResult.cs

9
ICSharpCode.NRefactory.CSharp/Resolver/OverloadResolution.cs

@ -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();
}
}

2
ICSharpCode.NRefactory/Semantics/ConversionResolveResult.cs

@ -32,6 +32,8 @@ namespace ICSharpCode.NRefactory.Semantics @@ -32,6 +32,8 @@ namespace ICSharpCode.NRefactory.Semantics
{
if (input == null)
throw new ArgumentNullException("input");
if (conversion == null)
throw new ArgumentNullException("conversion");
this.Input = input;
this.Conversion = conversion;
}

Loading…
Cancel
Save