diff --git a/ICSharpCode.NRefactory.CSharp/Ast/Expressions/AnonymousMethodExpression.cs b/ICSharpCode.NRefactory.CSharp/Ast/Expressions/AnonymousMethodExpression.cs index 07de16197a..c1f1acd606 100644 --- a/ICSharpCode.NRefactory.CSharp/Ast/Expressions/AnonymousMethodExpression.cs +++ b/ICSharpCode.NRefactory.CSharp/Ast/Expressions/AnonymousMethodExpression.cs @@ -80,6 +80,7 @@ namespace ICSharpCode.NRefactory.CSharp public AnonymousMethodExpression (BlockStatement body, IEnumerable parameters = null) { if (parameters != null) { + hasParameterList = true; foreach (var parameter in parameters) { AddChild (parameter, Roles.Parameter); } diff --git a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/ConvertLambdaToAnonymousDelegateAction.cs b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/ConvertLambdaToAnonymousDelegateAction.cs index cb6a555f1e..08103bf591 100644 --- a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/ConvertLambdaToAnonymousDelegateAction.cs +++ b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/ConvertLambdaToAnonymousDelegateAction.cs @@ -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 IEnumerable GetParameters(IList parameters, RefactoringContext context) { + if (parameters == null || parameters.Count == 0) + return null; + var result = new List (); foreach (var parameter in parameters) { var type = context.CreateShortType(parameter.Type); var name = parameter.Name; @@ -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; } } } diff --git a/ICSharpCode.NRefactory.Tests/CSharp/CodeActions/ConvertLamdaToAnonymousDelegateTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/CodeActions/ConvertLamdaToAnonymousDelegateTests.cs index b1fd140cdd..b55d90dedc 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/CodeActions/ConvertLamdaToAnonymousDelegateTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/CodeActions/ConvertLamdaToAnonymousDelegateTests.cs @@ -72,6 +72,28 @@ class A System.Console.WriteLine (i1); }; } +}"); + } + + [Test] + public void ParameterLessLambdaTest () + { + Test(@" +class A +{ + void F () + { + System.Action = ()$ => { System.Console.WriteLine (); }; + } +}", @" +class A +{ + void F () + { + System.Action = delegate { + System.Console.WriteLine (); +}; + } }"); } }