Browse Source

Fixed BOO-536: Forms Designer generated code has bad indentation.

Fixed MemberLookupHelper.GetCommonType.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@734 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
8d38544362
  1. 2
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs
  2. 19
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerGenerator.cs
  3. 12
      src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/AbstractDesignerGenerator.cs
  4. 13
      src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/CSharpDesignerGenerator.cs
  5. 12
      src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/VBNetDesignerGenerator.cs
  6. 15
      src/Main/Base/Project/Src/Dom/MemberLookupHelper.cs
  7. 9
      src/Main/Base/Test/MemberLookupHelperTests.cs

2
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs

@ -538,7 +538,7 @@ namespace Grunwald.BooBinding.CodeCompletion
IReturnType elementType = null; IReturnType elementType = null;
foreach (Expression expr in node.Items) { foreach (Expression expr in node.Items) {
ClearResult(); ClearResult();
node.Items[0].Accept(this); expr.Accept(this);
IReturnType thisType = (resolveResult != null) ? resolveResult.ResolvedType : null; IReturnType thisType = (resolveResult != null) ? resolveResult.ResolvedType : null;
if (elementType == null) if (elementType == null)
elementType = thisType; elementType = thisType;

19
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/Designer/BooDesignerGenerator.cs

@ -7,6 +7,7 @@
using System; using System;
using System.ComponentModel; using System.ComponentModel;
using System.Text;
using System.Reflection; using System.Reflection;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom;
@ -26,13 +27,16 @@ namespace Grunwald.BooBinding.Designer
return new Boo.Lang.CodeDom.BooCodeProvider(); return new Boo.Lang.CodeDom.BooCodeProvider();
} }
protected override string CreateEventHandler(EventDescriptor edesc, string eventMethodName, string body) protected override string CreateEventHandler(EventDescriptor edesc, string eventMethodName, string body, string indentation)
{ {
if (string.IsNullOrEmpty(body)) body = "\tpass"; if (string.IsNullOrEmpty(body)) body = "pass";
string param = GenerateParams(edesc); string param = GenerateParams(edesc);
return "private def " + eventMethodName + "(" + param + "):\n" +
body + StringBuilder b = new StringBuilder();
"\n"; b.AppendLine(indentation);
b.AppendLine(indentation + "private def " + eventMethodName + "(" + param + "):");
b.AppendLine(indentation + "\t" + body);
return b.ToString();
} }
protected override DomRegion GetReplaceRegion(ICSharpCode.TextEditor.Document.IDocument document, IMethod method) protected override DomRegion GetReplaceRegion(ICSharpCode.TextEditor.Document.IDocument document, IMethod method)
@ -41,6 +45,11 @@ namespace Grunwald.BooBinding.Designer
return new DomRegion(r.BeginLine + 1, 1, r.EndLine + 1, 1); return new DomRegion(r.BeginLine + 1, 1, r.EndLine + 1, 1);
} }
protected override int GetEventHandlerInsertionLine(IClass c)
{
return c.Region.EndLine + 1;
}
protected static string GenerateParams(EventDescriptor edesc) protected static string GenerateParams(EventDescriptor edesc)
{ {
Type type = edesc.EventType; Type type = edesc.EventType;

12
src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/AbstractDesignerGenerator.cs

@ -230,7 +230,7 @@ namespace ICSharpCode.FormDesigner
} }
} }
protected abstract string CreateEventHandler(EventDescriptor edesc, string eventMethodName, string body); protected abstract string CreateEventHandler(EventDescriptor edesc, string eventMethodName, string body, string indentation);
/// <summary> /// <summary>
/// If found return true and int as position /// If found return true and int as position
@ -258,14 +258,18 @@ namespace ICSharpCode.FormDesigner
position = c.Region.EndLine + 1; position = c.Region.EndLine + 1;
int offset = viewContent.Document.GetLineSegment(c.Region.EndLine - 1).Offset; int offset = viewContent.Document.GetLineSegment(GetEventHandlerInsertionLine(c) - 1).Offset;
viewContent.Document.Insert(offset, CreateEventHandler(edesc, eventMethodName, body)); viewContent.Document.Insert(offset, CreateEventHandler(edesc, eventMethodName, body, tabs));
viewContent.Document.FormattingStrategy.IndentLines(viewContent.TextEditorControl.ActiveTextAreaControl.TextArea, c.Region.EndLine - 1, c.Region.EndLine + 3);
return false; return false;
} }
protected virtual int GetEventHandlerInsertionLine(IClass c)
{
return c.Region.EndLine;
}
public ICollection GetCompatibleMethods(EventDescriptor edesc) public ICollection GetCompatibleMethods(EventDescriptor edesc)
{ {
Reparse(); Reparse();

13
src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/CSharpDesignerGenerator.cs

@ -9,6 +9,7 @@ using System;
using System.ComponentModel; using System.ComponentModel;
using System.Drawing; using System.Drawing;
using System.Reflection; using System.Reflection;
using System.Text;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom;
@ -43,13 +44,17 @@ namespace ICSharpCode.FormDesigner
return new Microsoft.CSharp.CSharpCodeProvider(); return new Microsoft.CSharp.CSharpCodeProvider();
} }
protected override string CreateEventHandler(EventDescriptor edesc, string eventMethodName, string body) protected override string CreateEventHandler(EventDescriptor edesc, string eventMethodName, string body, string indentation)
{ {
string param = GenerateParams(edesc, true); string param = GenerateParams(edesc, true);
return "void " + eventMethodName + "(" + param + ")\n" + StringBuilder b = new StringBuilder();
"{\n" + body + b.AppendLine(indentation);
"\n}\n\n"; b.AppendLine(indentation + "void " + eventMethodName + "(" + param + ")");
b.AppendLine(indentation + "{");
b.AppendLine(indentation + "\t" + body);
b.AppendLine(indentation + "}");
return b.ToString();
} }
protected static string GenerateParams(EventDescriptor edesc, bool paramNames) protected static string GenerateParams(EventDescriptor edesc, bool paramNames)

12
src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerGenerator/VBNetDesignerGenerator.cs

@ -7,6 +7,7 @@
using System; using System;
using System.ComponentModel; using System.ComponentModel;
using System.Text;
using System.Reflection; using System.Reflection;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom;
@ -31,13 +32,16 @@ namespace ICSharpCode.FormDesigner
return new DomRegion(r.BeginLine + 1, 1, r.EndLine, 1); return new DomRegion(r.BeginLine + 1, 1, r.EndLine, 1);
} }
protected override string CreateEventHandler(EventDescriptor edesc, string eventMethodName, string body) protected override string CreateEventHandler(EventDescriptor edesc, string eventMethodName, string body, string indentation)
{ {
string param = GenerateParams(edesc); string param = GenerateParams(edesc);
return "Sub " + eventMethodName + "(" + param + ")\n" + StringBuilder b = new StringBuilder();
body + b.AppendLine(indentation);
"\nEnd Sub\n\n"; b.AppendLine(indentation + "Sub " + eventMethodName + "(" + param + ")");
b.AppendLine(indentation + "\t" + body);
b.AppendLine(indentation + "End Sub");
return b.ToString();
} }
protected static string GenerateParams(EventDescriptor edesc) protected static string GenerateParams(EventDescriptor edesc)

15
src/Main/Base/Project/Src/Dom/MemberLookupHelper.cs

@ -680,6 +680,21 @@ namespace ICSharpCode.SharpDevelop.Dom
return b; return b;
if (ConversionExists(b, a)) if (ConversionExists(b, a))
return a; return a;
IClass c = a.GetUnderlyingClass();
if (c != null) {
foreach (IClass baseClass in c.ClassInheritanceTree) {
IReturnType baseType = baseClass.DefaultReturnType;
if (baseClass.TypeParameters.Count > 0) {
IReturnType[] typeArguments = new IReturnType[baseClass.TypeParameters.Count];
for (int i = 0; i < typeArguments.Length; i++) {
typeArguments[i] = GetTypeParameterPassedToBaseClass(a, baseClass, i);
}
baseType = new ConstructedReturnType(baseType, typeArguments);
}
if (ConversionExists(b, baseType))
return baseType;
}
}
return ReflectionReturnType.Object; return ReflectionReturnType.Object;
} }

9
src/Main/Base/Test/MemberLookupHelperTests.cs

@ -17,6 +17,7 @@ namespace ICSharpCode.SharpDevelop.Tests
public class MemberLookupHelperTests public class MemberLookupHelperTests
{ {
IProjectContent msc = ProjectContentRegistry.Mscorlib; IProjectContent msc = ProjectContentRegistry.Mscorlib;
IProjectContent swf = ProjectContentRegistry.WinForms;
public IReturnType DictionaryRT { public IReturnType DictionaryRT {
get { get {
@ -49,5 +50,13 @@ namespace ICSharpCode.SharpDevelop.Tests
IReturnType res = MemberLookupHelper.GetTypeParameterPassedToBaseClass(rrt, EnumerableClass, 0); IReturnType res = MemberLookupHelper.GetTypeParameterPassedToBaseClass(rrt, EnumerableClass, 0);
Assert.AreEqual("System.String", res.FullyQualifiedName); Assert.AreEqual("System.String", res.FullyQualifiedName);
} }
[Test]
public void GetCommonType()
{
IReturnType res = MemberLookupHelper.GetCommonType(swf.GetClass("System.Windows.Forms.ToolStripButton").DefaultReturnType,
swf.GetClass("System.Windows.Forms.ToolStripSeparator").DefaultReturnType);
Assert.AreEqual("System.Windows.Forms.ToolStripItem", res.FullyQualifiedName);
}
} }
} }

Loading…
Cancel
Save