Browse Source

Fix missing array type when converting VB.NET multiple variables on a single line to Python.

4.0
Matt Ward 14 years ago
parent
commit
5898c09238
  1. 6
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/NRefactoryToPythonConverter.cs
  2. 22
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/LocalVariableDefinitionsOnSameLineTests.cs

6
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/NRefactoryToPythonConverter.cs

@ -809,6 +809,8 @@ namespace ICSharpCode.PythonBinding @@ -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 @@ -1729,9 +1731,7 @@ namespace ICSharpCode.PythonBinding
/// </summary>
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);

22
src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/LocalVariableDefinitionsOnSameLineTests.cs

@ -34,5 +34,27 @@ namespace PythonBinding.Tests.Converter @@ -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);
}
}
}

Loading…
Cancel
Save