From 4e104efc65f6aa203a320432062e688ab2711438 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Kr=C3=BCger?= Date: Thu, 24 Jan 2013 11:38:45 +0100 Subject: [PATCH] ParameterCanBeDemotedIssue no longer tries to demote arrays to ILists. --- .../ParameterCanBeDemotedIssue.cs | 4 ++++ .../ParameterCanBeDemotedTests.cs | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ParameterCanBeDemotedIssue/ParameterCanBeDemotedIssue.cs b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ParameterCanBeDemotedIssue/ParameterCanBeDemotedIssue.cs index a4d35e5dca..d9cc0c7297 100644 --- a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ParameterCanBeDemotedIssue/ParameterCanBeDemotedIssue.cs +++ b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ParameterCanBeDemotedIssue/ParameterCanBeDemotedIssue.cs @@ -148,6 +148,10 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring orderby GetInheritanceDepth(type) ascending select type).ToList(); if (validTypes.Any()) { + // don't demote an array to IList + if (variable.Type.Kind == TypeKind.Array && validTypes.Any (t => t.Namespace == "System.Collections" && t.Name == "IList")) { + return; + } AddIssue(parameter, ctx.TranslateString("Parameter can be demoted to base class"), GetActions(parameter, validTypes)); MembersWithIssues++; } diff --git a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ParameterCanBeDemotedIssue/ParameterCanBeDemotedTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ParameterCanBeDemotedIssue/ParameterCanBeDemotedTests.cs index 108287a15e..b7dec0b42c 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ParameterCanBeDemotedIssue/ParameterCanBeDemotedTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ParameterCanBeDemotedIssue/ParameterCanBeDemotedTests.cs @@ -921,6 +921,21 @@ class Test : TestBase } }"); } + + /// + /// Bug 9617 - Incorrect "parameter can be demoted to base class" warning for arrays + /// + [Test] + public void TestBug9617() + { + Test(@"class Test +{ + object Foo (object[] arr) + { + return arr [0]; + } +}", 0); + } } }