Browse Source

Add fix action to ExplicitConversionInForEachIssue.

pull/32/merge
Daniel Grunwald 13 years ago
parent
commit
3d96f7c7ff
  1. 7
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ExplicitConversionInForEachIssue.cs
  2. 13
      ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ExplicitConversionInForEachIssueTests.cs
  3. 4
      ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/InspectionActionTestBase.cs

7
ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ExplicitConversionInForEachIssue.cs

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

13
ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ExplicitConversionInForEachIssueTests.cs

@ -66,10 +66,15 @@ class Foo { @@ -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<IList<IDisposable>> c)
{
foreach (IList<IDisposable> element in c) { }
}
}";
Test<ExplicitConversionInForEachIssue>(input, output);
}
}
}

4
ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/InspectionActionTestBase.cs

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
//
//
// InspectionActionTestBase.cs
//
// Author:
@ -81,7 +81,7 @@ namespace ICSharpCode.NRefactory.CSharp.CodeIssues @@ -81,7 +81,7 @@ namespace ICSharpCode.NRefactory.CSharp.CodeIssues
CheckFix (context, issues [issueToFix], output);
}
protected static void Test<T> (string input, string output, int fixIndex)
protected static void Test<T> (string input, string output, int fixIndex = 0)
where T : ICodeIssueProvider, new ()
{
TestRefactoringContext context;

Loading…
Cancel
Save