Browse Source

Fixed bug in C# to VB converter: AddEventHandler statements were not converted correctly.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@897 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
d59a61c841
  1. 27
      src/Libraries/NRefactory/Project/Src/Output/VBNet/VBNetOutputVisitor.cs
  2. 6
      src/Libraries/NRefactory/Test/Output/VBNet/ConverterTest.cs
  3. 4
      src/Main/Base/Project/Src/Services/RefactoringService/FindReferencesAndRenameHelper.cs
  4. 2
      src/Main/Base/Project/Src/Services/RefactoringService/LocalVariableRefactoring.cs
  5. 2
      src/Main/Base/Project/Src/TextEditor/Commands/ClassBookmarkMenuBuilder.cs
  6. 2
      src/Main/Base/Project/Src/TextEditor/Commands/ClassMemberMenuBuilder.cs

27
src/Libraries/NRefactory/Project/Src/Output/VBNet/VBNetOutputVisitor.cs

@ -2001,7 +2001,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -2001,7 +2001,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
outputFormatter.Space();
outputFormatter.PrintToken(Tokens.AddressOf);
outputFormatter.Space();
nodeTracker.TrackedVisit(assignmentExpression.Right, data);
nodeTracker.TrackedVisit(GetEventHandlerMethod(assignmentExpression.Right), data);
return null;
}
break;
@ -2015,7 +2015,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -2015,7 +2015,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
outputFormatter.Space();
outputFormatter.PrintToken(Tokens.AddressOf);
outputFormatter.Space();
nodeTracker.TrackedVisit(assignmentExpression.Right, data);
nodeTracker.TrackedVisit(GetEventHandlerMethod(assignmentExpression.Right), data);
return null;
}
break;
@ -2463,25 +2463,16 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -2463,25 +2463,16 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
if (expr is ObjectCreateExpression) {
ObjectCreateExpression oce = (ObjectCreateExpression) expr;
if (oce.Parameters.Count == 1) {
expr = (Expression)oce.Parameters[0];
string methodName = null;
if (expr is IdentifierExpression) {
methodName = ((IdentifierExpression)expr).Identifier;
} else if (expr is FieldReferenceExpression) {
methodName = ((FieldReferenceExpression)expr).FieldName;
}
if (methodName != null) {
foreach (object o in this.currentType.Children) {
if (o is MethodDeclaration && ((MethodDeclaration)o).Name == methodName) {
return true;
}
}
}
return oce.CreateType.SystemType.EndsWith("Handler");
}
}
return false;
}
Expression GetEventHandlerMethod(Expression expr)
{
ObjectCreateExpression oce = (ObjectCreateExpression)expr;
return oce.Parameters[0];
}
}
}

6
src/Libraries/NRefactory/Test/Output/VBNet/ConverterTest.cs

@ -85,5 +85,11 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -85,5 +85,11 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
"\tb(i) = s(i)\n" +
"Next");
}
[Test]
public void AddEventHandler()
{
TestStatement("this.button1.Click += new System.EventHandler(this.OnButton1Click);",
"AddHandler Me.button1.Click, AddressOf Me.OnButton1Click");
}
}
}

4
src/Main/Base/Project/Src/Services/RefactoringService/FindReferencesAndRenameHelper.cs

@ -79,9 +79,9 @@ namespace ICSharpCode.SharpDevelop.Refactoring @@ -79,9 +79,9 @@ namespace ICSharpCode.SharpDevelop.Refactoring
return (tecp == null) ? null : tecp.TextEditorControl;
}
public static bool CheckName(string name)
public static bool CheckName(string name, string oldName)
{
if (name == null || name.Length == 0)
if (name == null || name.Length == 0 || name == oldName)
return false;
if (!char.IsLetter(name, 0) && name[0] != '_') {
MessageService.ShowError("${res:SharpDevelop.Refactoring.InvalidNameStart}");

2
src/Main/Base/Project/Src/Services/RefactoringService/LocalVariableRefactoring.cs

@ -29,7 +29,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring @@ -29,7 +29,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring
{
LocalResolveResult local = (LocalResolveResult)Owner;
string newName = MessageService.ShowInputBox("${res:SharpDevelop.Refactoring.Rename}", "${res:SharpDevelop.Refactoring.RenameMemberText}", local.Field.Name);
if (!FindReferencesAndRenameHelper.CheckName(newName)) return;
if (!FindReferencesAndRenameHelper.CheckName(newName, local.Field.Name)) return;
List<Reference> list = RefactoringService.FindReferences(local, null);
if (list == null) return;

2
src/Main/Base/Project/Src/TextEditor/Commands/ClassBookmarkMenuBuilder.cs

@ -131,7 +131,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands @@ -131,7 +131,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
IClass c = (IClass)item.Tag;
c = c.DefaultReturnType.GetUnderlyingClass(); // get compound class if class is partial
string newName = MessageService.ShowInputBox("${res:SharpDevelop.Refactoring.Rename}", "${res:SharpDevelop.Refactoring.RenameClassText}", c.Name);
if (!FindReferencesAndRenameHelper.CheckName(newName)) return;
if (!FindReferencesAndRenameHelper.CheckName(newName, c.Name)) return;
List<Reference> list = RefactoringService.FindReferences(c, null);
if (list == null) return;

2
src/Main/Base/Project/Src/TextEditor/Commands/ClassMemberMenuBuilder.cs

@ -175,7 +175,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands @@ -175,7 +175,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands
MenuCommand item = (MenuCommand)sender;
IMember member = (IMember)item.Tag;
string newName = MessageService.ShowInputBox("${res:SharpDevelop.Refactoring.Rename}", "${res:SharpDevelop.Refactoring.RenameMemberText}", member.Name);
if (!FindReferencesAndRenameHelper.CheckName(newName)) return;
if (!FindReferencesAndRenameHelper.CheckName(newName, member.Name)) return;
List<Reference> list = RefactoringService.FindReferences(member, null);
if (list == null) return;

Loading…
Cancel
Save