diff --git a/ICSharpCode.NRefactory.CSharp/Resolver/CSharpInvocationResolveResult.cs b/ICSharpCode.NRefactory.CSharp/Resolver/CSharpInvocationResolveResult.cs index f6b590cf3d..bcbfb98c8a 100644 --- a/ICSharpCode.NRefactory.CSharp/Resolver/CSharpInvocationResolveResult.cs +++ b/ICSharpCode.NRefactory.CSharp/Resolver/CSharpInvocationResolveResult.cs @@ -52,9 +52,15 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver /// /// If IsExtensionMethodInvocation is true this property holds the reduced method. /// + IMethod reducedMethod; public IMethod ReducedMethod { - get; - internal set; + get { + if (!IsExtensionMethodInvocation) + return null; + if (reducedMethod == null && Member is IMethod) + reducedMethod = new ReducedExtensionMethod ((IMethod)Member); + return reducedMethod; + } } public CSharpInvocationResolveResult( diff --git a/ICSharpCode.NRefactory.CSharp/Resolver/OverloadResolution.cs b/ICSharpCode.NRefactory.CSharp/Resolver/OverloadResolution.cs index 242da1843f..b5cba6462b 100644 --- a/ICSharpCode.NRefactory.CSharp/Resolver/OverloadResolution.cs +++ b/ICSharpCode.NRefactory.CSharp/Resolver/OverloadResolution.cs @@ -950,7 +950,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver if (member == null) throw new InvalidOperationException(); - var result = new CSharpInvocationResolveResult( + return new CSharpInvocationResolveResult( this.IsExtensionMethodInvocation ? new TypeResolveResult(member.DeclaringType) : targetResolveResult, member, GetArgumentsWithConversions(targetResolveResult, member), @@ -961,9 +961,6 @@ 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 }