Browse Source

Changed C# invocation result that the reduced extension method has

it's own property.
pull/32/merge
Mike Krüger 13 years ago
parent
commit
a72b135df5
  1. 8
      ICSharpCode.NRefactory.CSharp/Resolver/CSharpInvocationResolveResult.cs
  2. 9
      ICSharpCode.NRefactory.CSharp/Resolver/OverloadResolution.cs

8
ICSharpCode.NRefactory.CSharp/Resolver/CSharpInvocationResolveResult.cs

@ -48,6 +48,14 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
public readonly bool IsExpandedForm; public readonly bool IsExpandedForm;
readonly IList<int> argumentToParameterMap; readonly IList<int> argumentToParameterMap;
/// <summary>
/// If IsExtensionMethodInvocation is true this property holds the reduced method.
/// </summary>
public IMethod ReducedMethod {
get;
internal set;
}
public CSharpInvocationResolveResult( public CSharpInvocationResolveResult(
ResolveResult targetResult, IParameterizedMember member, ResolveResult targetResult, IParameterizedMember member,

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

@ -949,10 +949,8 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
IParameterizedMember member = GetBestCandidateWithSubstitutedTypeArguments(); IParameterizedMember member = GetBestCandidateWithSubstitutedTypeArguments();
if (member == null) if (member == null)
throw new InvalidOperationException(); throw new InvalidOperationException();
if (this.IsExtensionMethodInvocation && member is IMethod) var result = new CSharpInvocationResolveResult(
member =new ReducedExtensionMethod ((IMethod)member);
return new CSharpInvocationResolveResult(
this.IsExtensionMethodInvocation ? new TypeResolveResult(member.DeclaringType) : targetResolveResult, this.IsExtensionMethodInvocation ? new TypeResolveResult(member.DeclaringType) : targetResolveResult,
member, member,
GetArgumentsWithConversions(targetResolveResult, member), GetArgumentsWithConversions(targetResolveResult, member),
@ -963,6 +961,9 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
argumentToParameterMap: this.GetArgumentToParameterMap(), argumentToParameterMap: this.GetArgumentToParameterMap(),
initializerStatements: initializerStatements, initializerStatements: initializerStatements,
returnTypeOverride: returnTypeOverride); returnTypeOverride: returnTypeOverride);
if (this.IsExtensionMethodInvocation && member is IMethod)
result.ReducedMethod = new ReducedExtensionMethod ((IMethod)member);
return result;
} }
#endregion #endregion
} }

Loading…
Cancel
Save