Browse Source

Fixed bug in declare local action.

pull/32/merge
Mike Krüger 13 years ago
parent
commit
ce739a62bf
  1. 13
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/CreateMethodDeclarationAction.cs
  2. 33
      ICSharpCode.NRefactory.Tests/CSharp/CodeActions/DeclareLocalVariableTests.cs

13
ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/CreateMethodDeclarationAction.cs

@ -291,14 +291,21 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -291,14 +291,21 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
} else {
return char.ToLower(type.Name [0]).ToString();
}
} else if (node is ArrayCreateExpression) {
name = "arr";
} else {
if (type.Kind == TypeKind.Unknown)
return "par";
name = GuessNameFromType(type);
}
name = char.ToLower(name [0]) + name.Substring(1);
return name;
var sb = new StringBuilder ();
sb.Append (char.ToLower(name [0]));
for (int i = 1; i < name.Length; i++) {
var ch = name[i];
if (char.IsLetterOrDigit (ch) || ch == '_')
sb.Append (ch);
}
return sb.ToString ();
}
static string GuessNameFromType(IType returnType)

33
ICSharpCode.NRefactory.Tests/CSharp/CodeActions/DeclareLocalVariableTests.cs

@ -265,5 +265,38 @@ namespace ICSharpCode.NRefactory.CSharp.CodeActions @@ -265,5 +265,38 @@ namespace ICSharpCode.NRefactory.CSharp.CodeActions
", 1);
}
/// <summary>
/// Bug 9873 - Declare local creates invalid code for implicitly typed array
/// </summary>
[Test()]
public void TestBug9873 ()
{
TestRefactoringContext.UseExplict = true;
Test<DeclareLocalVariableAction> (@"class TestClass
{
void DoStuff()
{
foreach (var i in <-new[] { 1, 2, 3 }->) {
Console.WriteLine (i);
}
}
}",
@"class TestClass
{
void DoStuff()
{
int[] arr = new[] {
1,
2,
3
};
foreach (var i in arr) {
Console.WriteLine (i);
}
}
}");
}
}
}

Loading…
Cancel
Save