Browse Source

[CodeIssues] RedundantArrayInitializerCommaIssue: show appropriate description for different types of initializers

newNRvisualizers
Mansheng Yang 13 years ago
parent
commit
bf33c03cc2
  1. 13
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/RedundantArrayInitializerCommaIssue.cs
  2. 53
      ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/RedundantArrayInitializerCommaIssueTests.cs

13
ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/RedundantArrayInitializerCommaIssue.cs

@ -57,7 +57,18 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -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));
}
}

53
ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/RedundantArrayInitializerCommaIssueTests.cs

@ -24,6 +24,7 @@ @@ -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 @@ -53,5 +54,57 @@ class TestClass
}";
Test<RedundantArrayInitializerCommaIssue> (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");
}
}
}

Loading…
Cancel
Save