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
var builder = new TypeSystemAstBuilder(csResolver); var builder = new TypeSystemAstBuilder(csResolver);
AstType elementType = builder.ConvertType(rr.ElementType); AstType elementType = builder.ConvertType(rr.ElementType);
AstType variableType = foreachStatement.VariableType; AstType variableType = foreachStatement.VariableType;
string text = ctx.TranslateString("Collection element type '{0}' is not implicitly convertible to '{1}'"); string issueText = ctx.TranslateString("Collection element type '{0}' is not implicitly convertible to '{1}'");
AddIssue(variableType, string.Format(text, elementType.GetText(), variableType.GetText())); 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 {
foreach (IDisposable element in c) { } foreach (IDisposable element in c) { }
} }
}"; }";
string output = @"using System.Collections.Generic;
TestRefactoringContext context; class Foo {
var issues = GetIssues (new ExplicitConversionInForEachIssue (), input, out context); void Bar (IList<IList<IDisposable>> c)
Assert.AreEqual (1, issues.Count); {
foreach (IList<IDisposable> element in c) { }
}
}";
Test<ExplicitConversionInForEachIssue>(input, output);
} }
} }
} }

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

@ -1,4 +1,4 @@
// //
// InspectionActionTestBase.cs // InspectionActionTestBase.cs
// //
// Author: // Author:
@ -81,7 +81,7 @@ namespace ICSharpCode.NRefactory.CSharp.CodeIssues
CheckFix (context, issues [issueToFix], output); 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 () where T : ICodeIssueProvider, new ()
{ {
TestRefactoringContext context; TestRefactoringContext context;

Loading…
Cancel
Save