Browse Source

Implemented AttributeReturnType, now the unit test AddIn should work again.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2589 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 18 years ago
parent
commit
c96e754075
  1. 15
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs
  2. 4
      src/Main/Base/Project/Src/Services/RefactoringService/RefactoringMenuBuilder.cs
  3. 9
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ClassFinder.cs
  4. 20
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/AttributeReturnType.cs
  5. 14
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryASTConvertVisitor.cs

15
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ConvertVisitor.cs

@ -159,16 +159,22 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -159,16 +159,22 @@ namespace Grunwald.BooBinding.CodeCompletion
m.TypeParameters = DefaultTypeParameter.EmptyTypeParameterList;
}
void ConvertAttributes(AST.TypeMember node, AbstractDecoration c)
void ConvertAttributes(AST.TypeMember node, AbstractDecoration to)
{
if (node.Attributes.Count == 0) {
c.Attributes = DefaultAttribute.EmptyAttributeList;
to.Attributes = DefaultAttribute.EmptyAttributeList;
} else {
ClassFinder context;
if (to is IClass) {
context = new ClassFinder((IClass)to, node.LexicalInfo.Line, node.LexicalInfo.Column);
} else {
context = new ClassFinder(to.DeclaringType, node.LexicalInfo.Line, node.LexicalInfo.Column);
}
foreach (AST.Attribute a in node.Attributes) {
c.Attributes.Add(new DefaultAttribute(new AttributeReturnType(a.Name)));
to.Attributes.Add(new DefaultAttribute(new AttributeReturnType(context, a.Name)));
}
}
c.Documentation = node.Documentation;
to.Documentation = node.Documentation;
}
void ConvertParameters(AST.ParameterDeclarationCollection parameters, DefaultMethod m)
@ -497,3 +503,4 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -497,3 +503,4 @@ namespace Grunwald.BooBinding.CodeCompletion
}
}
}

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

@ -105,9 +105,8 @@ namespace ICSharpCode.SharpDevelop.Refactoring @@ -105,9 +105,8 @@ namespace ICSharpCode.SharpDevelop.Refactoring
// Include menu for current class and method
ICompilationUnit cu = null;
IMember callingMember = null;
if (rr != null) {
if (rr != null && rr.CallingMember != null) {
callingMember = rr.CallingMember;
cu = callingMember.DeclaringType.CompilationUnit;
} else {
ParseInformation parseInfo = ParserService.GetParseInformation(textEditorControl.FileName);
if (parseInfo != null) {
@ -282,3 +281,4 @@ namespace ICSharpCode.SharpDevelop.Refactoring @@ -282,3 +281,4 @@ namespace ICSharpCode.SharpDevelop.Refactoring

9
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ClassFinder.cs

@ -38,6 +38,14 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -38,6 +38,14 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
public int CaretLine {
get { return caretLine; }
}
public int CaretColumn {
get { return caretColumn; }
}
public ClassFinder(ParseInformation parseInfo, string fileContent, int offset)
{
caretLine = 0;
@ -115,3 +123,4 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -115,3 +123,4 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
}

20
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/AttributeReturnType.cs

@ -10,23 +10,35 @@ using System; @@ -10,23 +10,35 @@ using System;
namespace ICSharpCode.SharpDevelop.Dom
{
/// <summary>
/// Description of AttributeReturnType.
/// Like SearchClassReturnType, but tries both the specified name and name+"Attribute".
/// </summary>
public class AttributeReturnType : ProxyReturnType
{
string name;
SearchClassReturnType scrt1, scrt2;
public AttributeReturnType(string name)
public AttributeReturnType(ClassFinder context, string name)
{
if (context == null)
throw new ArgumentNullException("context");
if (name == null)
throw new ArgumentNullException("name");
this.name = name;
scrt1 = new SearchClassReturnType(context.ProjectContent, context.CallingClass,
context.CaretLine, context.CaretColumn, name, 0);
scrt2 = new SearchClassReturnType(context.ProjectContent, context.CallingClass,
context.CaretLine, context.CaretColumn, name + "Attribute", 0);
}
public override IReturnType BaseType {
get {
return null;
if (scrt1.GetUnderlyingClass() != null)
return scrt1;
else
return scrt2;
}
}
}
}

14
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryASTConvertVisitor.cs

@ -192,11 +192,18 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -192,11 +192,18 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
if (from.Attributes.Count == 0) {
to.Attributes = DefaultAttribute.EmptyAttributeList;
} else {
to.Attributes = VisitAttributes(from.Attributes);
ICSharpCode.NRefactory.Location location = from.Attributes[0].StartLocation;
ClassFinder context;
if (to is IClass) {
context = new ClassFinder((IClass)to, location.Line, location.Column);
} else {
context = new ClassFinder(to.DeclaringType, location.Line, location.Column);
}
to.Attributes = VisitAttributes(from.Attributes, context);
}
}
List<IAttribute> VisitAttributes(List<AST.AttributeSection> attributes)
List<IAttribute> VisitAttributes(List<AST.AttributeSection> attributes, ClassFinder context)
{
// TODO Expressions???
List<IAttribute> result = new List<IAttribute>();
@ -240,7 +247,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -240,7 +247,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
}
foreach (AST.Attribute attribute in section.Attributes) {
result.Add(new DefaultAttribute(new AttributeReturnType(attribute.Name), target));
result.Add(new DefaultAttribute(new AttributeReturnType(context, attribute.Name), target));
}
}
return result;
@ -642,3 +649,4 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -642,3 +649,4 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
}
}
}

Loading…
Cancel
Save