From f9f6611fd7c5ad2f4d1a8f54b4398a35454f0b8f Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Fri, 3 Jun 2011 21:29:27 +0100 Subject: [PATCH] Support converting VB.NET exit statements to Ruby. --- .../Project/Src/NRefactoryToRubyConverter.cs | 8 +++- .../Test/Converter/VBExitConversionTests.cs | 41 +++++++++++++++++++ .../RubyBinding/Test/RubyBinding.Tests.csproj | 1 + 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Converter/VBExitConversionTests.cs diff --git a/src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/NRefactoryToRubyConverter.cs b/src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/NRefactoryToRubyConverter.cs index 97a7475a8f..ebe528f9e0 100644 --- a/src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/NRefactoryToRubyConverter.cs +++ b/src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/NRefactoryToRubyConverter.cs @@ -401,7 +401,13 @@ namespace ICSharpCode.RubyBinding expressionStatement.Expression.AcceptVisitor(this, data); AppendLine(); return null; - } + } + + public override object TrackedVisitExitStatement(ExitStatement exitStatement, object data) + { + AppendIndentedLine("break"); + return null; + } public override object TrackedVisitFieldDeclaration(FieldDeclaration fieldDeclaration, object data) { diff --git a/src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Converter/VBExitConversionTests.cs b/src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Converter/VBExitConversionTests.cs new file mode 100644 index 0000000000..9ef48d218c --- /dev/null +++ b/src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Converter/VBExitConversionTests.cs @@ -0,0 +1,41 @@ +// 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.RubyBinding; +using NUnit.Framework; + +namespace RubyBinding.Tests.Converter +{ + [TestFixture] + public class VBExitConversionTests + { + string vb = + "Public Class Class1\r\n" + + " Public Sub Test\r\n" + + " While True\r\n" + + " Exit While\r\n" + + " End While\r\n" + + " End Sub\r\n" + + "End Class\r\n"; + + [Test] + public void ConvertedRubyCode() + { + NRefactoryToRubyConverter converter = new NRefactoryToRubyConverter(SupportedLanguage.VBNet); + converter.IndentString = " "; + string ruby = converter.Convert(vb); + string expectedRuby = + "class Class1\r\n" + + " def Test()\r\n" + + " while true\r\n" + + " break\r\n" + + " end\r\n" + + " end\r\n" + + "end"; + + Assert.AreEqual(expectedRuby, ruby); + } + } +} diff --git a/src/AddIns/BackendBindings/Ruby/RubyBinding/Test/RubyBinding.Tests.csproj b/src/AddIns/BackendBindings/Ruby/RubyBinding/Test/RubyBinding.Tests.csproj index ddbe8f1487..bd8549d68c 100644 --- a/src/AddIns/BackendBindings/Ruby/RubyBinding/Test/RubyBinding.Tests.csproj +++ b/src/AddIns/BackendBindings/Ruby/RubyBinding/Test/RubyBinding.Tests.csproj @@ -148,6 +148,7 @@ +