From 341be44215a2ad2e18407dacf5071e7e8e29e44c Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Thu, 24 Dec 2009 16:34:33 +0000 Subject: [PATCH] Class base types now converted to python. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@5340 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Src/NRefactoryToPythonConverter.cs | 21 ++++++++++- .../BaseClassConversionTestFixture.cs | 36 +++++++++++++++++++ .../Test/PythonBinding.Tests.csproj | 1 + 3 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/BaseClassConversionTestFixture.cs diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/NRefactoryToPythonConverter.cs b/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/NRefactoryToPythonConverter.cs index 5868d0be23..389948312b 100644 --- a/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/NRefactoryToPythonConverter.cs +++ b/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/NRefactoryToPythonConverter.cs @@ -1129,7 +1129,9 @@ namespace ICSharpCode.PythonBinding public override object TrackedVisitTypeDeclaration(TypeDeclaration typeDeclaration, object data) { codeBuilder.AppendLineIfPreviousLineIsCode(); - AppendIndentedLine("class " + typeDeclaration.Name + "(object):"); + AppendIndented("class " + typeDeclaration.Name); + AppendBaseTypes(typeDeclaration.BaseTypes); + AppendLine(); IncreaseIndent(); AppendDocstring(xmlDocComments); if (typeDeclaration.Children.Count > 0) { @@ -1985,5 +1987,22 @@ namespace ICSharpCode.PythonBinding Append(")"); AppendLine(); } + + void AppendBaseTypes(List baseTypes) + { + Append("("); + if (baseTypes.Count == 0) { + Append("object"); + } else { + for (int i = 0; i < baseTypes.Count; ++i) { + TypeReference typeRef = baseTypes[i]; + if (i > 0) { + Append(", "); + } + Append(GetTypeName(typeRef)); + } + } + Append("):"); + } } } diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/BaseClassConversionTestFixture.cs b/src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/BaseClassConversionTestFixture.cs new file mode 100644 index 0000000000..f3b9312360 --- /dev/null +++ b/src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/BaseClassConversionTestFixture.cs @@ -0,0 +1,36 @@ +// +// +// +// +// $Revision$ +// + +using System; +using ICSharpCode.NRefactory; +using ICSharpCode.PythonBinding; +using NUnit.Framework; + +namespace PythonBinding.Tests.Converter +{ + [TestFixture] + public class BaseClassConversionTestFixture + { + string csharp = + "class Foo : Bar, IMyInterface\r\n" + + "{\r\n" + + "}"; + + [Test] + public void ConvertedPythonCode() + { + string expectedCode = + "class Foo(Bar, IMyInterface):\r\n" + + " pass"; + NRefactoryToPythonConverter converter = new NRefactoryToPythonConverter(SupportedLanguage.CSharp); + converter.IndentString = " "; + string code = converter.Convert(csharp); + + Assert.AreEqual(expectedCode, code); + } + } +} diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj b/src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj index bdaf65f63c..ca45c80c92 100644 --- a/src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj +++ b/src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj @@ -100,6 +100,7 @@ +