From 5898c09238a9af65220db82646db9310c4c50760 Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Sat, 4 Jun 2011 10:47:41 +0100 Subject: [PATCH] Fix missing array type when converting VB.NET multiple variables on a single line to Python. --- .../Src/NRefactoryToPythonConverter.cs | 6 ++--- ...LocalVariableDefinitionsOnSameLineTests.cs | 22 +++++++++++++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/NRefactoryToPythonConverter.cs b/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/NRefactoryToPythonConverter.cs index a333a5d760..0b1455a6c6 100644 --- a/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/NRefactoryToPythonConverter.cs +++ b/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/NRefactoryToPythonConverter.cs @@ -809,6 +809,8 @@ namespace ICSharpCode.PythonBinding { foreach (VariableDeclaration variableDeclaration in localVariableDeclaration.Variables) { if (!variableDeclaration.Initializer.IsNull) { + + AddTypeToArrayInitializerIfMissing(variableDeclaration); // Create variable declaration. AppendIndented(variableDeclaration.Name + " = "); @@ -1729,9 +1731,7 @@ namespace ICSharpCode.PythonBinding /// void CreateFieldInitialization(FieldDeclaration field) { - for (int i = 0; i < field.Fields.Count; ++i) { - VariableDeclaration variable = field.Fields[i]; - + foreach (VariableDeclaration variable in field.Fields) { // Ignore field if it has no initializer. if (FieldHasInitialValue(variable)) { AddTypeToArrayInitializerIfMissing(variable); diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/LocalVariableDefinitionsOnSameLineTests.cs b/src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/LocalVariableDefinitionsOnSameLineTests.cs index 667a913a0f..896aee8558 100644 --- a/src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/LocalVariableDefinitionsOnSameLineTests.cs +++ b/src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/LocalVariableDefinitionsOnSameLineTests.cs @@ -34,5 +34,27 @@ namespace PythonBinding.Tests.Converter Assert.AreEqual(expectedPython, python); } + + string vnetClassWithTwoArrayVariablesOnSameLine = + "class Foo\r\n" + + " Public Sub New()\r\n" + + " Dim i(10), j(20) as integer\r\n" + + " End Sub\r\n" + + "end class"; + + [Test] + public void ConvertVBNetClassWithTwoArrayVariablesOnSameLine() + { + NRefactoryToPythonConverter converter = new NRefactoryToPythonConverter(SupportedLanguage.VBNet); + converter.IndentString = " "; + string python = converter.Convert(vnetClassWithTwoArrayVariablesOnSameLine); + string expectedPython = + "class Foo(object):\r\n" + + " def __init__(self):\r\n" + + " i = Array.CreateInstance(int, 10)\r\n" + + " j = Array.CreateInstance(int, 20)"; + + Assert.AreEqual(expectedPython, python); + } } }