Browse Source

[CodeActions] Don't return a convert to extension method call code action if the call is already using extension method syntax.

newNRvisualizers
Simon Lindgren 14 years ago
parent
commit
05f8cfeb81
  1. 2
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/StaticMethodInvocationToExtensionMethodInvocationAction.cs
  2. 19
      ICSharpCode.NRefactory.Tests/CSharp/CodeActions/StaticMethodInvocationToExtensionMethodInvocationTests.cs

2
ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/StaticMethodInvocationToExtensionMethodInvocationAction.cs

@ -52,7 +52,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
if (invocationRR == null) if (invocationRR == null)
yield break; yield break;
var method = invocationRR.Member as IMethod; var method = invocationRR.Member as IMethod;
if (method == null || !method.IsExtensionMethod) if (method == null || !method.IsExtensionMethod || invocationRR.IsExtensionMethodInvocation)
yield break; yield break;
yield return new CodeAction(context.TranslateString("Convert to extension method call"), script => { yield return new CodeAction(context.TranslateString("Convert to extension method call"), script => {
var newArgumentList = invocation.Arguments.Skip(1).Select(arg => arg.Clone()).ToList(); var newArgumentList = invocation.Arguments.Skip(1).Select(arg => arg.Clone()).ToList();

19
ICSharpCode.NRefactory.Tests/CSharp/CodeActions/StaticMethodInvocationToExtensionMethodInvocationTests.cs

@ -136,6 +136,25 @@ class C
}"); }");
} }
[Test]
public void IgnoresIfAlreadyExtensionMethodCallSyntax()
{
TestWrongContext<StaticMethodInvocationToExtensionMethodInvocationAction>(@"
class A { }
static class B
{
public static void Ext (this A a, int i);
}
class C
{
void F()
{
A a = new A();
a.$Ext (1);
}
}");
}
[Test] [Test]
public void IgnoresPropertyInvocation() public void IgnoresPropertyInvocation()
{ {

Loading…
Cancel
Save