From ff0f6412696557d1e026c9f4f9accb9342fcc318 Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Wed, 15 Jul 2009 19:01:41 +0000 Subject: [PATCH] Fixed bug when converting references to 'this' and event handlers to python. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@4444 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Src/NRefactoryToPythonConverter.cs | 5 ++++- .../Test/Converter/AddHandlerConversionTestFixture.cs | 11 ++++++++++- .../EventHandlerWithObjectCreationTestFixture.cs | 2 +- .../Converter/RemoveHandlerConversionTestFixture.cs | 2 +- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/NRefactoryToPythonConverter.cs b/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/NRefactoryToPythonConverter.cs index 0d152804da..13577a422e 100644 --- a/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/NRefactoryToPythonConverter.cs +++ b/src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/NRefactoryToPythonConverter.cs @@ -1560,8 +1560,11 @@ namespace ICSharpCode.PythonBinding // Create event handler expression. IdentifierExpression identifierExpression = eventHandlerExpression as IdentifierExpression; ObjectCreateExpression objectCreateExpression = eventHandlerExpression as ObjectCreateExpression; + MemberReferenceExpression memberRefExpression = eventHandlerExpression as MemberReferenceExpression; if (identifierExpression != null) { - Append(identifierExpression.Identifier); + Append("self." + identifierExpression.Identifier); + } else if (memberRefExpression != null) { + memberRefExpression.AcceptVisitor(this, null); } else if (objectCreateExpression != null) { CreateDelegateCreateExpression(objectCreateExpression.Parameters[0]); } diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/AddHandlerConversionTestFixture.cs b/src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/AddHandlerConversionTestFixture.cs index 6b22f5992b..2906fa2f44 100644 --- a/src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/AddHandlerConversionTestFixture.cs +++ b/src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/AddHandlerConversionTestFixture.cs @@ -25,11 +25,16 @@ namespace PythonBinding.Tests.Converter "\t{" + "\t\tbutton = new Button();\r\n" + "\t\tbutton.Click += ButtonClick;\r\n" + + "\t\tbutton.MouseDown += self.OnMouseDown;\r\n" + "\t}\r\n" + "\r\n" + "\tvoid ButtonClick(object sender, EventArgs e)\r\n" + "\t{\r\n" + "\t}\r\n" + + "\r\n" + + "\tvoid OnMouseDown(object sender, EventArgs e)\r\n" + + "\t{\r\n" + + "\t}\r\n" + "}"; [Test] @@ -38,9 +43,13 @@ namespace PythonBinding.Tests.Converter string expectedCode = "class Foo(object):\r\n" + "\tdef __init__(self):\r\n" + "\t\tbutton = Button()\r\n" + - "\t\tbutton.Click += ButtonClick\r\n" + + "\t\tbutton.Click += self.ButtonClick\r\n" + + "\t\tbutton.MouseDown += self.OnMouseDown\r\n" + "\r\n" + "\tdef ButtonClick(self, sender, e):\r\n" + + "\t\tpass\r\n" + + "\r\n" + + "\tdef OnMouseDown(self, sender, e):\r\n" + "\t\tpass"; NRefactoryToPythonConverter converter = new NRefactoryToPythonConverter(SupportedLanguage.CSharp); string code = converter.Convert(csharp); diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/EventHandlerWithObjectCreationTestFixture.cs b/src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/EventHandlerWithObjectCreationTestFixture.cs index c2ee4161a8..e316d3706a 100644 --- a/src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/EventHandlerWithObjectCreationTestFixture.cs +++ b/src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/EventHandlerWithObjectCreationTestFixture.cs @@ -38,7 +38,7 @@ namespace PythonBinding.Tests.Converter string expectedCode = "class Foo(object):\r\n" + "\tdef __init__(self):\r\n" + "\t\tbutton = Button()\r\n" + - "\t\tbutton.Click += ButtonClick\r\n" + + "\t\tbutton.Click += self.ButtonClick\r\n" + "\r\n" + "\tdef ButtonClick(self, sender, e):\r\n" + "\t\tpass"; diff --git a/src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/RemoveHandlerConversionTestFixture.cs b/src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/RemoveHandlerConversionTestFixture.cs index fd3162c471..40c497578c 100644 --- a/src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/RemoveHandlerConversionTestFixture.cs +++ b/src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/RemoveHandlerConversionTestFixture.cs @@ -38,7 +38,7 @@ namespace PythonBinding.Tests.Converter string expectedCode = "class Foo(object):\r\n" + "\tdef __init__(self):\r\n" + "\t\tbutton = Button()\r\n" + - "\t\tbutton.Click -= ButtonClick\r\n" + + "\t\tbutton.Click -= self.ButtonClick\r\n" + "\r\n" + "\tdef ButtonClick(self, sender, e):\r\n" + "\t\tpass";