diff --git a/ICSharpCode.NRefactory.CSharp/Resolver/CSharpInvocationResolveResult.cs b/ICSharpCode.NRefactory.CSharp/Resolver/CSharpInvocationResolveResult.cs index 3ef49d921c..f6b590cf3d 100644 --- a/ICSharpCode.NRefactory.CSharp/Resolver/CSharpInvocationResolveResult.cs +++ b/ICSharpCode.NRefactory.CSharp/Resolver/CSharpInvocationResolveResult.cs @@ -48,6 +48,14 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver public readonly bool IsExpandedForm; readonly IList argumentToParameterMap; + + /// + /// If IsExtensionMethodInvocation is true this property holds the reduced method. + /// + public IMethod ReducedMethod { + get; + internal set; + } public CSharpInvocationResolveResult( ResolveResult targetResult, IParameterizedMember member, diff --git a/ICSharpCode.NRefactory.CSharp/Resolver/OverloadResolution.cs b/ICSharpCode.NRefactory.CSharp/Resolver/OverloadResolution.cs index 59e6974130..242da1843f 100644 --- a/ICSharpCode.NRefactory.CSharp/Resolver/OverloadResolution.cs +++ b/ICSharpCode.NRefactory.CSharp/Resolver/OverloadResolution.cs @@ -949,10 +949,8 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver IParameterizedMember member = GetBestCandidateWithSubstitutedTypeArguments(); if (member == null) throw new InvalidOperationException(); - - if (this.IsExtensionMethodInvocation && member is IMethod) - member =new ReducedExtensionMethod ((IMethod)member); - return new CSharpInvocationResolveResult( + + var result = new CSharpInvocationResolveResult( this.IsExtensionMethodInvocation ? new TypeResolveResult(member.DeclaringType) : targetResolveResult, member, GetArgumentsWithConversions(targetResolveResult, member), @@ -963,6 +961,9 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver argumentToParameterMap: this.GetArgumentToParameterMap(), initializerStatements: initializerStatements, returnTypeOverride: returnTypeOverride); + if (this.IsExtensionMethodInvocation && member is IMethod) + result.ReducedMethod = new ReducedExtensionMethod ((IMethod)member); + return result; } #endregion }