From 1e561dd9b02545f992c64323e1e6e5d0ddf59487 Mon Sep 17 00:00:00 2001 From: Simon Lindgren Date: Thu, 19 Jul 2012 10:01:35 +0200 Subject: [PATCH] [CodeIssues] Be more allowing when picking format string arguments in FormatStringIssue. --- .../CodeIssues/FormatStringIssue.cs | 2 +- .../CSharp/CodeIssues/FormatStringTests.cs | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/FormatStringIssue.cs b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/FormatStringIssue.cs index e762387c00..21d433cbe6 100644 --- a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/FormatStringIssue.cs +++ b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/FormatStringIssue.cs @@ -126,7 +126,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring if (parameter.Type.Equals(stringType) && parameterNames.Contains(parameter.Name) && argument is PrimitiveExpression) { format = (string)((PrimitiveExpression)argument).Value; formatStart = argument.StartLocation; - } else if (parameter.IsParams || parameter.Type.Equals(objectType)) { + } else if (format != null || parameter.IsParams) { arguments.Add(argument); } } diff --git a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/FormatStringTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/FormatStringTests.cs index 7c81325cf2..ca1ca48751 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/FormatStringTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/FormatStringTests.cs @@ -48,6 +48,27 @@ class TestClass var issues = GetIssues (new FormatStringIssue (), input, out context); Assert.AreEqual (1, issues.Count); } + + [Test] + public void SupportsFixedArguments() + { + var input = @" +class TestClass +{ + void Foo() + { + Bar(""{0}"", 1); + } + + void Bar(string format, string arg0) + { + } +}"; + + TestRefactoringContext context; + var issues = GetIssues (new FormatStringIssue (), input, out context); + Assert.AreEqual (0, issues.Count); + } [Test] public void FormatItemIndexOutOfRangeOfArguments()