Browse Source

Fixed VB code completion. Fixed method overload lookup.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@139 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 21 years ago
parent
commit
b468d12412
  1. 19
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/GutterMargin.cs
  2. 7
      src/Main/Base/Project/Src/Dom/IReturnType.cs
  3. 10
      src/Main/Base/Project/Src/Dom/Implementations/AbstractReturnType.cs
  4. 6
      src/Main/Base/Project/Src/Dom/Implementations/ArrayReturnType.cs
  5. 6
      src/Main/Base/Project/Src/Dom/Implementations/GenericReturnType.cs
  6. 28
      src/Main/Base/Project/Src/Dom/Implementations/LazyReturnType.cs
  7. 4
      src/Main/Base/Project/Src/Dom/Implementations/ProxyReturnType.cs
  8. 6
      src/Main/Base/Project/Src/Dom/Implementations/SpecificReturnType.cs
  9. 12
      src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs
  10. 4
      src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs
  11. 5
      src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionReturnType.cs
  12. 8
      src/Main/Base/Test/NRefactoryResolverTests.cs

19
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/GutterMargin.cs

@ -90,17 +90,22 @@ namespace ICSharpCode.TextEditor @@ -90,17 +90,22 @@ namespace ICSharpCode.TextEditor
Point selectionStartPos;
bool selectionComeFromGutter = false;
bool selectionGutterDirectionDown = false;
bool selectionGutterDirectionDown = false; // direction of gutter selection affects whether a selection starts at the start of a line or at the end of a line
public override void HandleMouseDown(Point mousepos, MouseButtons mouseButtons)
{
selectionComeFromGutter = true;
selectionGutterDirectionDown = false;
int realline = textArea.TextView.GetLogicalLine(mousepos);
if (realline >= 0 && realline < textArea.Document.TotalNumberOfLines) {
selectionStartPos = new Point(0, realline);
textArea.SelectionManager.ClearSelection();
textArea.SelectionManager.SetSelection(new DefaultSelection(textArea.Document, selectionStartPos, new Point(textArea.Document.GetLineSegment(realline).Length + 1, realline)));
textArea.Caret.Position = selectionStartPos;
if((Control.ModifierKeys & Keys.Shift) != 0 && textArea.SelectionManager.HasSomethingSelected) {
// let MouseMove handle a shift-click in a gutter
HandleMouseMove(mousepos, mouseButtons);
} else {
selectionGutterDirectionDown = false; // reset the flag for handling in mousemove
selectionStartPos = new Point(0, realline);
textArea.SelectionManager.ClearSelection();
textArea.SelectionManager.SetSelection(new DefaultSelection(textArea.Document, selectionStartPos, new Point(textArea.Document.GetLineSegment(realline).Length + 1, realline)));
textArea.Caret.Position = selectionStartPos;
}
}
}
@ -118,7 +123,7 @@ namespace ICSharpCode.TextEditor @@ -118,7 +123,7 @@ namespace ICSharpCode.TextEditor
Point realmousepos = new Point(0, realline);
if (realmousepos.Y < textArea.Document.TotalNumberOfLines) {
if (selectionStartPos.Y == realmousepos.Y) {
// this setselection defaults for a downward moving selection
// this setselection defaults for a upward moving selection
textArea.SelectionManager.SetSelection(new DefaultSelection(textArea.Document, realmousepos, new Point(textArea.Document.GetLineSegment(realmousepos.Y).Length + 1, realmousepos.Y)));
selectionGutterDirectionDown = false;
} else if (selectionStartPos.Y < realmousepos.Y && textArea.SelectionManager.HasSomethingSelected) {

7
src/Main/Base/Project/Src/Dom/IReturnType.cs

@ -36,6 +36,13 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -36,6 +36,13 @@ namespace ICSharpCode.SharpDevelop.Dom
get;
}
/// <summary>
/// Gets if the return type is a default type, i.e. no array, generic etc.
/// </summary>
bool IsDefaultReturnType {
get;
}
List<IMethod> GetMethods();
List<IProperty> GetProperties();
List<IField> GetFields();

10
src/Main/Base/Project/Src/Dom/Implementations/AbstractReturnType.cs

@ -24,9 +24,9 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -24,9 +24,9 @@ namespace ICSharpCode.SharpDevelop.Dom
public override bool Equals(object o)
{
AbstractReturnType rt = o as AbstractReturnType;
IReturnType rt = o as IReturnType;
if (rt == null) return false;
return this.fullyQualifiedName == rt.fullyQualifiedName;
return rt.IsDefaultReturnType && this.FullyQualifiedName == rt.FullyQualifiedName;
}
public override int GetHashCode()
@ -79,5 +79,11 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -79,5 +79,11 @@ namespace ICSharpCode.SharpDevelop.Dom
return 0;
}
}
public virtual bool IsDefaultReturnType {
get {
return true;
}
}
}
}

6
src/Main/Base/Project/Src/Dom/Implementations/ArrayReturnType.cs

@ -82,6 +82,12 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -82,6 +82,12 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
public override bool IsDefaultReturnType {
get {
return false;
}
}
string AppendArrayString(string a)
{
StringBuilder b = new StringBuilder(a, a.Length + 1 + dimensions);

6
src/Main/Base/Project/Src/Dom/Implementations/GenericReturnType.cs

@ -31,6 +31,12 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -31,6 +31,12 @@ namespace ICSharpCode.SharpDevelop.Dom
return typeParameter.Equals(rt.typeParameter);
}
public override bool IsDefaultReturnType {
get {
return false;
}
}
public override int GetHashCode()
{
return typeParameter.GetHashCode();

28
src/Main/Base/Project/Src/Dom/Implementations/LazyReturnType.cs

@ -32,10 +32,22 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -32,10 +32,22 @@ namespace ICSharpCode.SharpDevelop.Dom
shortName = fullName.Substring(pos + 1);
}
public override bool IsDefaultReturnType {
get {
return true;
}
}
public override bool Equals(object o)
{
GetClassReturnType rt = o as GetClassReturnType;
if (rt == null) return false;
if (rt == null) {
IReturnType rt2 = o as IReturnType;
if (rt2 != null && rt2.IsDefaultReturnType)
return rt2.FullyQualifiedName == fullName;
else
return false;
}
return fullName == rt.fullName;
}
@ -111,7 +123,13 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -111,7 +123,13 @@ namespace ICSharpCode.SharpDevelop.Dom
public override bool Equals(object o)
{
SearchClassReturnType rt = o as SearchClassReturnType;
if (rt == null) return false;
if (rt == null) {
IReturnType rt2 = o as IReturnType;
if (rt2 != null && rt2.IsDefaultReturnType)
return rt2.FullyQualifiedName == this.FullyQualifiedName;
else
return false;
}
if (declaringClass != rt.declaringClass) return false;
return name == rt.name;
}
@ -155,6 +173,12 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -155,6 +173,12 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
public override bool IsDefaultReturnType {
get {
return true;
}
}
public override string ToString()
{
return String.Format("[SearchClassReturnType: {0}]", name);

4
src/Main/Base/Project/Src/Dom/Implementations/ProxyReturnType.cs

@ -88,5 +88,9 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -88,5 +88,9 @@ namespace ICSharpCode.SharpDevelop.Dom
IReturnType baseType = BaseType;
return (baseType != null) ? baseType.GetIndexers() : new List<IIndexer>();
}
public abstract bool IsDefaultReturnType {
get;
}
}
}

6
src/Main/Base/Project/Src/Dom/Implementations/SpecificReturnType.cs

@ -199,6 +199,12 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -199,6 +199,12 @@ namespace ICSharpCode.SharpDevelop.Dom
return l;
}
public override bool IsDefaultReturnType {
get {
return false;
}
}
public override string ToString()
{
return String.Format("[SpecificReturnType: {0}<{1}>]", baseType, typeParameters);

12
src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs

@ -267,10 +267,18 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -267,10 +267,18 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
// Console.Write(fileContent.Substring(startOffset, offset - startOffset));
// Console.WriteLine("</source>");
int length = offset - startOffset;
System.Text.StringBuilder b = new System.Text.StringBuilder("class A {", length + 10 + startLine);
string classDecl, endClassDecl;
if (language == SupportedLanguages.VBNet) {
classDecl = "Class A";
endClassDecl = "End Class\n";
} else {
classDecl = "class A {";
endClassDecl = "}\n";
}
System.Text.StringBuilder b = new System.Text.StringBuilder(classDecl, length + classDecl.Length + endClassDecl.Length + startLine - 1);
b.Append('\n', startLine - 1);
b.Append(fileContent, startOffset, length);
b.Append("}\n");
b.Append(endClassDecl);
return new System.IO.StringReader(b.ToString());
}

4
src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs

@ -413,6 +413,10 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -413,6 +413,10 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
IReturnType CreateReturnType(Type type)
{
if (ReflectionReturnType.IsDefaultType(type)) {
IClass c = resolver.ProjectContent.GetClass(type.FullName);
if (c != null) return c.DefaultReturnType;
}
return ReflectionReturnType.Create(ProjectContentRegistry.GetMscorlibContent(), type);
}
}

5
src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionReturnType.cs

@ -29,6 +29,11 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -29,6 +29,11 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
public static bool IsDefaultType(Type type)
{
return !type.IsArray && !type.IsGenericType && !type.IsGenericParameter;
}
public static IReturnType Create(IMember member, Type type)
{
if (type.IsArray) {

8
src/Main/Base/Test/NRefactoryResolverTests.cs

@ -24,7 +24,6 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -24,7 +24,6 @@ namespace ICSharpCode.SharpDevelop.Tests
visitor.Visit(p.CompilationUnit, null);
visitor.Cu.FileName = fileName;
visitor.Cu.ErrorsDuringCompile = p.Errors.count > 0;
visitor.Cu.Tag = p.CompilationUnit;
foreach (IClass c in visitor.Cu.Classes) {
pc.AddClassToNamespaceList(c);
}
@ -47,7 +46,6 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -47,7 +46,6 @@ namespace ICSharpCode.SharpDevelop.Tests
visitor.Visit(p.CompilationUnit, null);
visitor.Cu.FileName = fileName;
visitor.Cu.ErrorsDuringCompile = p.Errors.count > 0;
visitor.Cu.Tag = p.CompilationUnit;
foreach (IClass c in visitor.Cu.Classes) {
pc.AddClassToNamespaceList(c);
}
@ -67,7 +65,8 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -67,7 +65,8 @@ namespace ICSharpCode.SharpDevelop.Tests
NRefactoryResolver resolver = new NRefactoryResolver(ICSharpCode.NRefactory.Parser.SupportedLanguages.CSharp);
return resolver.Resolve(expression,
line, 0,
"a.cs");
"a.cs",
program);
}
ResolveResult ResolveVB(string program, string expression, int line)
@ -77,7 +76,8 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -77,7 +76,8 @@ namespace ICSharpCode.SharpDevelop.Tests
NRefactoryResolver resolver = new NRefactoryResolver(ICSharpCode.NRefactory.Parser.SupportedLanguages.VBNet);
return resolver.Resolve(expression,
line, 0,
"a.vb");
"a.vb",
program);
}
IProjectContent corLib;

Loading…
Cancel
Save