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

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

@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
using System;
using System.ComponentModel;
using System.Text;
using System.Reflection;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Dom;
@ -26,13 +27,16 @@ namespace Grunwald.BooBinding.Designer @@ -26,13 +27,16 @@ namespace Grunwald.BooBinding.Designer
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);
return "private def " + eventMethodName + "(" + param + "):\n" +
body +
"\n";
StringBuilder b = new StringBuilder();
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)
@ -41,6 +45,11 @@ namespace Grunwald.BooBinding.Designer @@ -41,6 +45,11 @@ namespace Grunwald.BooBinding.Designer
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)
{
Type type = edesc.EventType;

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

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

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

@ -9,6 +9,7 @@ using System; @@ -9,6 +9,7 @@ using System;
using System.ComponentModel;
using System.Drawing;
using System.Reflection;
using System.Text;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Dom;
@ -43,13 +44,17 @@ namespace ICSharpCode.FormDesigner @@ -43,13 +44,17 @@ namespace ICSharpCode.FormDesigner
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);
return "void " + eventMethodName + "(" + param + ")\n" +
"{\n" + body +
"\n}\n\n";
StringBuilder b = new StringBuilder();
b.AppendLine(indentation);
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)

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

@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
using System;
using System.ComponentModel;
using System.Text;
using System.Reflection;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Dom;
@ -31,13 +32,16 @@ namespace ICSharpCode.FormDesigner @@ -31,13 +32,16 @@ namespace ICSharpCode.FormDesigner
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);
return "Sub " + eventMethodName + "(" + param + ")\n" +
body +
"\nEnd Sub\n\n";
StringBuilder b = new StringBuilder();
b.AppendLine(indentation);
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)

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

@ -680,6 +680,21 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -680,6 +680,21 @@ namespace ICSharpCode.SharpDevelop.Dom
return b;
if (ConversionExists(b, 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;
}

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

@ -17,6 +17,7 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -17,6 +17,7 @@ namespace ICSharpCode.SharpDevelop.Tests
public class MemberLookupHelperTests
{
IProjectContent msc = ProjectContentRegistry.Mscorlib;
IProjectContent swf = ProjectContentRegistry.WinForms;
public IReturnType DictionaryRT {
get {
@ -49,5 +50,13 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -49,5 +50,13 @@ namespace ICSharpCode.SharpDevelop.Tests
IReturnType res = MemberLookupHelper.GetTypeParameterPassedToBaseClass(rrt, EnumerableClass, 0);
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