From fba3a7a46d4c0d3713d58758344da99609b208f9 Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Fri, 3 Jun 2011 20:49:55 +0100 Subject: [PATCH] Supporting converting multiple variable assignments on a single line to Python. --- .../Src/NRefactoryToPythonConverter.cs | 19 +++++----- ...LocalVariableDefinitionsOnSameLineTests.cs | 38 +++++++++++++++++++ .../Test/PythonBinding.Tests.csproj | 1 + ...LocalVariableDefinitionsOnSameLineTests.cs | 2 +- 4 files changed, 50 insertions(+), 10 deletions(-) create mode 100644 src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/LocalVariableDefinitionsOnSameLineTests.cs diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/NRefactoryToPythonConverter.cs b/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/NRefactoryToPythonConverter.cs index daf2054e60..e872254fdf 100644 --- a/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/NRefactoryToPythonConverter.cs +++ b/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/NRefactoryToPythonConverter.cs @@ -807,15 +807,16 @@ namespace ICSharpCode.PythonBinding /// public override object TrackedVisitLocalVariableDeclaration(LocalVariableDeclaration localVariableDeclaration, object data) { - VariableDeclaration variableDeclaration = localVariableDeclaration.Variables[0]; - if (!variableDeclaration.Initializer.IsNull) { - - // Create variable declaration. - AppendIndented(variableDeclaration.Name + " = "); - - // Generate the variable initializer. - variableDeclaration.Initializer.AcceptVisitor(this, data); - AppendLine(); + foreach (VariableDeclaration variableDeclaration in localVariableDeclaration.Variables) { + if (!variableDeclaration.Initializer.IsNull) { + + // Create variable declaration. + AppendIndented(variableDeclaration.Name + " = "); + + // Generate the variable initializer. + variableDeclaration.Initializer.AcceptVisitor(this, data); + AppendLine(); + } } return null; } diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/LocalVariableDefinitionsOnSameLineTests.cs b/src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/LocalVariableDefinitionsOnSameLineTests.cs new file mode 100644 index 0000000000..667a913a0f --- /dev/null +++ b/src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/LocalVariableDefinitionsOnSameLineTests.cs @@ -0,0 +1,38 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) +// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) + +using System; +using ICSharpCode.NRefactory; +using ICSharpCode.PythonBinding; +using NUnit.Framework; + +namespace PythonBinding.Tests.Converter +{ + [TestFixture] + public class LocalVariableDefinitionsOnSameLineTests + { + string csharp = + "class Foo\r\n" + + "{\r\n" + + " public Foo()\r\n" + + " {\r\n" + + " int i = 0, i = 2;\r\n" + + " }\r\n" + + "}"; + + [Test] + public void ConvertedPythonCode() + { + NRefactoryToPythonConverter converter = new NRefactoryToPythonConverter(SupportedLanguage.CSharp); + converter.IndentString = " "; + string python = converter.Convert(csharp); + string expectedPython = + "class Foo(object):\r\n" + + " def __init__(self):\r\n" + + " i = 0\r\n" + + " i = 2"; + + Assert.AreEqual(expectedPython, python); + } + } +} diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj b/src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj index 21df89f0d4..d1b8ff5729 100644 --- a/src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj +++ b/src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj @@ -141,6 +141,7 @@ + diff --git a/src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Converter/LocalVariableDefinitionsOnSameLineTests.cs b/src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Converter/LocalVariableDefinitionsOnSameLineTests.cs index afda37718d..fbace33d0d 100644 --- a/src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Converter/LocalVariableDefinitionsOnSameLineTests.cs +++ b/src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Converter/LocalVariableDefinitionsOnSameLineTests.cs @@ -16,7 +16,7 @@ namespace RubyBinding.Tests.Converter "{\r\n" + " public Foo()\r\n" + " {\r\n" + - " int i = 0, i = 2\r\n" + + " int i = 0, i = 2;\r\n" + " }\r\n" + "}";