From bd1811cc18eb6343a954e6dfda35577b6b1109fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Kr=C3=BCger?= Date: Fri, 1 Feb 2013 09:41:50 +0100 Subject: [PATCH] [TypeSystem] Specialized method now contains a flag specifying the extension method mode. There needs some distinction between extension methods calles foo.Ext (); and Class.Ext(foo); even if it's the same method call - it's different for code completion tooltips. --- .../Resolver/OverloadResolution.cs | 2 ++ .../TypeSystem/Implementation/SpecializedMethod.cs | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/ICSharpCode.NRefactory.CSharp/Resolver/OverloadResolution.cs b/ICSharpCode.NRefactory.CSharp/Resolver/OverloadResolution.cs index a4efe127f5..63aafbd216 100644 --- a/ICSharpCode.NRefactory.CSharp/Resolver/OverloadResolution.cs +++ b/ICSharpCode.NRefactory.CSharp/Resolver/OverloadResolution.cs @@ -950,6 +950,8 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver if (member == null) throw new InvalidOperationException(); + if (this.IsExtensionMethodInvocation) + ((SpecializedMethod)member).IsExtendedExtensionMethod = true; return new CSharpInvocationResolveResult( this.IsExtensionMethodInvocation ? new TypeResolveResult(member.DeclaringType) : targetResolveResult, member, diff --git a/ICSharpCode.NRefactory/TypeSystem/Implementation/SpecializedMethod.cs b/ICSharpCode.NRefactory/TypeSystem/Implementation/SpecializedMethod.cs index 7405106203..93d91f1459 100644 --- a/ICSharpCode.NRefactory/TypeSystem/Implementation/SpecializedMethod.cs +++ b/ICSharpCode.NRefactory/TypeSystem/Implementation/SpecializedMethod.cs @@ -153,6 +153,14 @@ namespace ICSharpCode.NRefactory.TypeSystem.Implementation accessorOwner = value; } } + + /// + /// Gets/Sets whether the method is an extension method that are being called using extension method syntax. + /// + public bool IsExtendedExtensionMethod { + get; + set; + } public override IMemberReference ToMemberReference() {