diff --git a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/RedundantArrayInitializerCommaIssue.cs b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/RedundantArrayInitializerCommaIssue.cs index 5a748db76a..aed48ef960 100644 --- a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/RedundantArrayInitializerCommaIssue.cs +++ b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/RedundantArrayInitializerCommaIssue.cs @@ -57,7 +57,18 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring var commaToken = arrayInitializerExpression.RBraceToken.PrevSibling as CSharpTokenNode; if (commaToken == null || commaToken.GetText () != ",") return; - AddIssue (commaToken, ctx.TranslateString ("Remove redundant comma in array initializer"), + string initializerType; + if (arrayInitializerExpression.Parent is ObjectCreateExpression) { + if (arrayInitializerExpression.Elements.FirstOrNullObject () is NamedExpression) { + initializerType = "object"; + } else { + initializerType = "collection"; + } + } else { + initializerType = "array"; + } + AddIssue (commaToken, + ctx.TranslateString (string.Format("Remove redundant comma in {0} initializer", initializerType)), script => script.Remove (commaToken)); } } diff --git a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/RedundantArrayInitializerCommaIssueTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/RedundantArrayInitializerCommaIssueTests.cs index cd8d561ed7..9609e03b7e 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/RedundantArrayInitializerCommaIssueTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/RedundantArrayInitializerCommaIssueTests.cs @@ -24,6 +24,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +using ICSharpCode.NRefactory.CSharp.CodeActions; using ICSharpCode.NRefactory.CSharp.Refactoring; using NUnit.Framework; @@ -53,5 +54,57 @@ class TestClass }"; Test (input, 1, output); } + + [Test] + public void TestArrayInitializerDescription () + { + var input = @" +class TestClass +{ + void TestMethod () + { + var a = new int[] { 1, 2, }; + } +}"; + TestRefactoringContext ctx; + var issues = GetIssues (new RedundantArrayInitializerCommaIssue (), input, out ctx); + Assert.AreEqual (issues.Count, 1); + Assert.AreEqual (issues [0].Description, "Remove redundant comma in array initializer"); + } + + [Test] + public void TestObjectInitializerDescription () + { + var input = @" +class TestClass +{ + int Prop { get; set; } + void TestMethod () + { + var a = new TestClass { Prop = 1, }; + } +}"; + TestRefactoringContext ctx; + var issues = GetIssues (new RedundantArrayInitializerCommaIssue (), input, out ctx); + Assert.AreEqual (issues.Count, 1); + Assert.AreEqual (issues [0].Description, "Remove redundant comma in object initializer"); + } + + [Test] + public void TestCollectionInitializerDescrition () + { + var input = @" +class TestClass +{ + void TestMethod () + { + var a = new TestClass { 1, }; + } +}"; + TestRefactoringContext ctx; + var issues = GetIssues (new RedundantArrayInitializerCommaIssue (), input, out ctx); + Assert.AreEqual (issues.Count, 1); + Assert.AreEqual (issues [0].Description, "Remove redundant comma in collection initializer"); + } } }