From 129fd876d42f968b345fd4ad68d3b277c226b04a Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Fri, 26 Jul 2019 19:15:49 +0200 Subject: [PATCH] Use extension method syntax only if the extension method is eligible. --- .../CSharp/Transforms/IntroduceExtensionMethods.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ICSharpCode.Decompiler/CSharp/Transforms/IntroduceExtensionMethods.cs b/ICSharpCode.Decompiler/CSharp/Transforms/IntroduceExtensionMethods.cs index b376815db..0e23d86cc 100644 --- a/ICSharpCode.Decompiler/CSharp/Transforms/IntroduceExtensionMethods.cs +++ b/ICSharpCode.Decompiler/CSharp/Transforms/IntroduceExtensionMethods.cs @@ -176,7 +176,8 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms var or = rr.PerformOverloadResolution(resolver.CurrentTypeResolveContext.Compilation, arguments, argumentNames, allowExtensionMethods: true); if (or == null || or.IsAmbiguous) return false; - return method.Equals(or.GetBestCandidateWithSubstitutedTypeArguments()); + return method.Equals(or.GetBestCandidateWithSubstitutedTypeArguments()) + && CSharpResolver.IsEligibleExtensionMethod(target.Type, method, useTypeInference: false, out _); } public static bool CanTransformToExtensionMethodCall(IMethod method, CSharpTypeResolveContext resolveContext, bool ignoreTypeArguments = false, bool ignoreArgumentNames = true)