Browse Source

[CodeAction] Convert lambda to delegate action no longer puts a

redundant () in the anonymous delegate.
newNRvisualizers
Mike Krüger 13 years ago
parent
commit
1b41ee02ca
  1. 1
      ICSharpCode.NRefactory.CSharp/Ast/Expressions/AnonymousMethodExpression.cs
  2. 7
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/ConvertLambdaToAnonymousDelegateAction.cs
  3. 22
      ICSharpCode.NRefactory.Tests/CSharp/CodeActions/ConvertLamdaToAnonymousDelegateTests.cs

1
ICSharpCode.NRefactory.CSharp/Ast/Expressions/AnonymousMethodExpression.cs

@ -80,6 +80,7 @@ namespace ICSharpCode.NRefactory.CSharp @@ -80,6 +80,7 @@ namespace ICSharpCode.NRefactory.CSharp
public AnonymousMethodExpression (BlockStatement body, IEnumerable<ParameterDeclaration> parameters = null)
{
if (parameters != null) {
hasParameterList = true;
foreach (var parameter in parameters) {
AddChild (parameter, Roles.Parameter);
}

7
ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/ConvertLambdaToAnonymousDelegateAction.cs

@ -56,7 +56,6 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -56,7 +56,6 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
};
}
var method = new AnonymousMethodExpression (newBody, GetParameters(lambdaResolveResult.Parameters, context));
method.HasParameterList = true;
script.Replace(node, method);
});
}
@ -64,6 +63,9 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -64,6 +63,9 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
IEnumerable<ParameterDeclaration> GetParameters(IList<IParameter> parameters, RefactoringContext context)
{
if (parameters == null || parameters.Count == 0)
return null;
var result = new List<ParameterDeclaration> ();
foreach (var parameter in parameters) {
var type = context.CreateShortType(parameter.Type);
var name = parameter.Name;
@ -72,8 +74,9 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -72,8 +74,9 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
modifier |= ParameterModifier.Ref;
if (parameter.IsOut)
modifier |= ParameterModifier.Out;
yield return new ParameterDeclaration(type, name, modifier);
result.Add (new ParameterDeclaration(type, name, modifier));
}
return result;
}
}
}

22
ICSharpCode.NRefactory.Tests/CSharp/CodeActions/ConvertLamdaToAnonymousDelegateTests.cs

@ -72,6 +72,28 @@ class A @@ -72,6 +72,28 @@ class A
System.Console.WriteLine (i1);
};
}
}");
}
[Test]
public void ParameterLessLambdaTest ()
{
Test<ConvertLambdaToAnonymousDelegateAction>(@"
class A
{
void F ()
{
System.Action = ()$ => { System.Console.WriteLine (); };
}
}", @"
class A
{
void F ()
{
System.Action = delegate {
System.Console.WriteLine ();
};
}
}");
}
}

Loading…
Cancel
Save