From 3d96f7c7ff767afa244c7cd2bca270094bbdaeed Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sun, 27 Jan 2013 21:30:10 +0100 Subject: [PATCH] Add fix action to ExplicitConversionInForEachIssue. --- .../CodeIssues/ExplicitConversionInForEachIssue.cs | 7 +++++-- .../ExplicitConversionInForEachIssueTests.cs | 13 +++++++++---- .../CSharp/CodeIssues/InspectionActionTestBase.cs | 4 ++-- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ExplicitConversionInForEachIssue.cs b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ExplicitConversionInForEachIssue.cs index b4b5dbff78..787a861200 100644 --- a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ExplicitConversionInForEachIssue.cs +++ b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ExplicitConversionInForEachIssue.cs @@ -63,8 +63,11 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring var builder = new TypeSystemAstBuilder(csResolver); AstType elementType = builder.ConvertType(rr.ElementType); AstType variableType = foreachStatement.VariableType; - string text = ctx.TranslateString("Collection element type '{0}' is not implicitly convertible to '{1}'"); - AddIssue(variableType, string.Format(text, elementType.GetText(), variableType.GetText())); + string issueText = ctx.TranslateString("Collection element type '{0}' is not implicitly convertible to '{1}'"); + string fixText = ctx.TranslateString("Use type '{0}'"); + AddIssue(variableType, string.Format(issueText, elementType.GetText(), variableType.GetText()), + new CodeAction(string.Format(fixText, elementType.GetText()), + script => script.Replace(variableType, elementType))); } } } diff --git a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ExplicitConversionInForEachIssueTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ExplicitConversionInForEachIssueTests.cs index a0fcd50d78..ada2c5cc09 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ExplicitConversionInForEachIssueTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ExplicitConversionInForEachIssueTests.cs @@ -66,10 +66,15 @@ class Foo { foreach (IDisposable element in c) { } } }"; - - TestRefactoringContext context; - var issues = GetIssues (new ExplicitConversionInForEachIssue (), input, out context); - Assert.AreEqual (1, issues.Count); + string output = @"using System.Collections.Generic; +class Foo { + void Bar (IList> c) + { + foreach (IList element in c) { } + } +}"; + + Test(input, output); } } } diff --git a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/InspectionActionTestBase.cs b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/InspectionActionTestBase.cs index 465bce52cb..eff35245a1 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/InspectionActionTestBase.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/InspectionActionTestBase.cs @@ -1,4 +1,4 @@ -// +// // InspectionActionTestBase.cs // // Author: @@ -81,7 +81,7 @@ namespace ICSharpCode.NRefactory.CSharp.CodeIssues CheckFix (context, issues [issueToFix], output); } - protected static void Test (string input, string output, int fixIndex) + protected static void Test (string input, string output, int fixIndex = 0) where T : ICodeIssueProvider, new () { TestRefactoringContext context;