Browse Source

Removed IIndexer from ICSharpCode.Dom (replaced by IProperty.IsIndexer)

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@440 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
059bc6db0c
  1. 67
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpAmbience.cs
  2. 6
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpCompletionBinding.cs
  3. 7
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs
  4. 57
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetAmbience.cs
  5. 12
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetCompletionBinding.cs
  6. 2
      src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj
  7. 3
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  8. 4
      src/Main/Base/Project/Src/Dom/IClass.cs
  9. 23
      src/Main/Base/Project/Src/Dom/IIndexer.cs
  10. 4
      src/Main/Base/Project/Src/Dom/IMethod.cs
  11. 12
      src/Main/Base/Project/Src/Dom/IProperty.cs
  12. 5
      src/Main/Base/Project/Src/Dom/IReturnType.cs
  13. 1
      src/Main/Base/Project/Src/Dom/Implementations/AbstractReturnType.cs
  14. 24
      src/Main/Base/Project/Src/Dom/Implementations/ArrayReturnType.cs
  15. 7
      src/Main/Base/Project/Src/Dom/Implementations/CombinedReturnType.cs
  16. 12
      src/Main/Base/Project/Src/Dom/Implementations/CompoundClass.cs
  17. 15
      src/Main/Base/Project/Src/Dom/Implementations/DefaultClass.cs
  18. 98
      src/Main/Base/Project/Src/Dom/Implementations/DefaultIndexer.cs
  19. 11
      src/Main/Base/Project/Src/Dom/Implementations/DefaultProperty.cs
  20. 9
      src/Main/Base/Project/Src/Dom/Implementations/DefaultReturnType.cs
  21. 8
      src/Main/Base/Project/Src/Dom/Implementations/ProxyReturnType.cs
  22. 17
      src/Main/Base/Project/Src/Dom/Implementations/SpecificReturnType.cs
  23. 8
      src/Main/Base/Project/Src/Dom/LanguageProperties.cs
  24. 8
      src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs
  25. 16
      src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs
  26. 27
      src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs
  27. 30
      src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionClass.cs
  28. 11
      src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionField.cs
  29. 98
      src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionIndexer.cs
  30. 9
      src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionMethod.cs
  31. 14
      src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionParameter.cs
  32. 15
      src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionProperty.cs
  33. 1
      src/Main/Base/Project/Src/Services/AmbienceService/AbstractAmbience.cs
  34. 5
      src/Main/Base/Project/Src/Services/AmbienceService/AmbienceReflectionDecorator.cs
  35. 1
      src/Main/Base/Project/Src/Services/AmbienceService/IAmbience.cs
  36. 31
      src/Main/Base/Project/Src/Services/AmbienceService/NetAmbience.cs
  37. 14
      src/Main/Base/Project/Src/Services/ClassBrowserIcons/ClassBrowserIconService.cs
  38. 4
      src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs
  39. 4
      src/Main/Base/Project/Src/Services/RefactoringService/RefactoringService.cs
  40. 4
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/InsightWindow/IndexerInsightDataProvider.cs
  41. 8
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/InsightWindow/MethodInsightDataProvider.cs
  42. 7
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/ParserFoldingStrategy.cs
  43. 21
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs

67
src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpAmbience.cs

@ -304,22 +304,24 @@ namespace ICSharpCode.Core @@ -304,22 +304,24 @@ namespace ICSharpCode.Core
builder.Append(' ');
}
if (property.IsIndexer) {
builder.Append("this");
} else {
if (IncludeHTMLMarkup) {
builder.Append("<b>");
}
if (UseFullyQualifiedMemberNames) {
builder.Append(property.FullyQualifiedName);
} else {
builder.Append(property.Name);
}
if (IncludeHTMLMarkup) {
builder.Append("</b>");
}
}
if (property.Parameters.Count > 0) {
builder.Append("(");
builder.Append(property.IsIndexer ? '[' : '(');
if (IncludeHTMLMarkup) builder.Append("<br>");
for (int i = 0; i < property.Parameters.Count; ++i) {
@ -331,7 +333,7 @@ namespace ICSharpCode.Core @@ -331,7 +333,7 @@ namespace ICSharpCode.Core
if (IncludeHTMLMarkup) builder.Append("<br>");
}
builder.Append(')');
builder.Append(property.IsIndexer ? ']' : ')');
}
if (IncludeBodies) {
@ -386,63 +388,6 @@ namespace ICSharpCode.Core @@ -386,63 +388,6 @@ namespace ICSharpCode.Core
return builder.ToString();
}
public override string Convert(IIndexer m)
{
StringBuilder builder = new StringBuilder();
builder.Append(Convert(m.Modifiers));
if (IncludeHTMLMarkup) {
builder.Append("<i>");
}
if (ShowModifiers) {
if (m.IsStatic) {
builder.Append("static ");
}
}
if (IncludeHTMLMarkup) {
builder.Append("</i>");
}
if (m.ReturnType != null && ShowReturnType) {
builder.Append(Convert(m.ReturnType));
builder.Append(' ');
}
if (IncludeHTMLMarkup) {
builder.Append("<b>");
}
if (UseFullyQualifiedMemberNames) {
builder.Append(m.FullyQualifiedName);
} else {
builder.Append(m.Name);
}
if (IncludeHTMLMarkup) {
builder.Append("</b>");
}
builder.Append("this[");
if (IncludeHTMLMarkup) builder.Append("<br>");
for (int i = 0; i < m.Parameters.Count; ++i) {
if (IncludeHTMLMarkup) builder.Append("&nbsp;&nbsp;&nbsp;");
builder.Append(Convert(m.Parameters[i]));
if (i + 1 < m.Parameters.Count) {
builder.Append(", ");
}
if (IncludeHTMLMarkup) builder.Append("<br>");
}
builder.Append(']');
if (IncludeBodies) builder.Append(";");
return builder.ToString();
}
public override string Convert(IMethod m)
{
StringBuilder builder = new StringBuilder();

6
src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpCompletionBinding.cs

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
// <file>
// <file>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
@ -123,7 +123,7 @@ namespace CSharpBinding @@ -123,7 +123,7 @@ namespace CSharpBinding
{
int paramCount = parameters.Count;
dp.SetupDataProvider(editor.FileName, editor.ActiveTextAreaControl.TextArea);
List<IMethodOrIndexer> methods = dp.Methods;
List<IMethodOrProperty> methods = dp.Methods;
if (methods.Count == 0) return;
bool overloadIsSure;
if (methods.Count == 1) {
@ -141,7 +141,7 @@ namespace CSharpBinding @@ -141,7 +141,7 @@ namespace CSharpBinding
}
editor.ShowInsightWindow(dp);
if (overloadIsSure) {
IMethodOrIndexer method = methods[dp.DefaultIndex];
IMethodOrProperty method = methods[dp.DefaultIndex];
if (paramCount < method.Parameters.Count) {
IParameter param = method.Parameters[paramCount];
ProvideContextCompletion(editor, param.ReturnType, charTyped);

7
src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
// <file>
// <file>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
@ -264,11 +264,6 @@ namespace CSharpBinding.FormattingStrategy @@ -264,11 +264,6 @@ namespace CSharpBinding.FormattingStrategy
return p;
}
}
foreach (IIndexer i in c.Indexer) {
if (IsBeforeRegion(textArea, i.Region, lineNr)) {
return i;
}
}
foreach (IEvent e in c.Events) {
if (IsBeforeRegion(textArea, e.Region, lineNr)) {
return e;

57
src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetAmbience.cs

@ -178,7 +178,7 @@ namespace VBNetBinding @@ -178,7 +178,7 @@ namespace VBNetBinding
}
if (c.TypeParameters.Count > 0) {
builder.Append("(Of");
builder.Append("(Of ");
for (int i = 0; i < c.TypeParameters.Count; ++i) {
if (i > 0) builder.Append(", ");
builder.Append(c.TypeParameters[i].Name);
@ -313,6 +313,10 @@ namespace VBNetBinding @@ -313,6 +313,10 @@ namespace VBNetBinding
builder.Append(GetModifier(property));
}
if (property.IsIndexer) {
builder.Append("Default ");
}
if (property.CanGet && !property.CanSet) {
builder.Append("ReadOnly ");
}
@ -393,53 +397,6 @@ namespace VBNetBinding @@ -393,53 +397,6 @@ namespace VBNetBinding
return builder.ToString();
}
public override string Convert(IIndexer m)
{
StringBuilder builder = new StringBuilder();
builder.Append(Convert(m.Modifiers));
if (ShowModifiers) {
if (m.IsStatic) {
builder.Append("Shared ");
}
}
if (IncludeHTMLMarkup) {
builder.Append("<b>");
}
if (UseFullyQualifiedMemberNames) {
builder.Append(m.FullyQualifiedName);
} else {
builder.Append(m.Name);
}
if (IncludeHTMLMarkup) {
builder.Append("</b>");
}
builder.Append("Item(");
if (IncludeHTMLMarkup) builder.Append("<br>");
for (int i = 0; i < m.Parameters.Count; ++i) {
if (IncludeHTMLMarkup) builder.Append("&nbsp;&nbsp;&nbsp;");
builder.Append(Convert(m.Parameters[i]));
if (i + 1 < m.Parameters.Count) {
builder.Append(", ");
}
if (IncludeHTMLMarkup) builder.Append("<br>");
}
builder.Append(")");
if (m.ReturnType != null && ShowReturnType) {
builder.Append(" As ");
builder.Append(Convert(m.ReturnType));
}
return builder.ToString();
}
public override string Convert(IMethod m)
{
StringBuilder builder = new StringBuilder();
@ -472,7 +429,7 @@ namespace VBNetBinding @@ -472,7 +429,7 @@ namespace VBNetBinding
}
if (m.TypeParameters.Count > 0) {
builder.Append("(Of");
builder.Append("(Of ");
for (int i = 0; i < m.TypeParameters.Count; ++i) {
if (i > 0) builder.Append(", ");
builder.Append(m.TypeParameters[i].Name);
@ -547,7 +504,7 @@ namespace VBNetBinding @@ -547,7 +504,7 @@ namespace VBNetBinding
} else if (returnType is SpecificReturnType) {
SpecificReturnType rt = (SpecificReturnType)returnType;
UnpackNestedType(builder, rt.BaseType);
builder.Append("(Of");
builder.Append("(Of ");
for (int i = 0; i < rt.TypeParameters.Count; ++i) {
if (i > 0) builder.Append(", ");
builder.Append(Convert(rt.TypeParameters[i]));

12
src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetCompletionBinding.cs

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
// <file>
// <file>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="Markus Palme" email="MarkusPalme@gmx.de"/>
@ -21,6 +21,12 @@ namespace VBNetBinding @@ -21,6 +21,12 @@ namespace VBNetBinding
{
public class VBNetCompletionBinding : DefaultCodeCompletionBinding
{
public VBNetCompletionBinding()
{
// Don't use indexer insight for '[', VB uses '(' for indexer access
this.EnableIndexerInsight = false;
}
public override bool HandleKeyPress(SharpDevelopTextAreaControl editor, char ch)
{
VBNetBinding.Parser.ExpressionFinder ef = new VBNetBinding.Parser.ExpressionFinder();
@ -122,7 +128,7 @@ namespace VBNetBinding @@ -122,7 +128,7 @@ namespace VBNetBinding
{
int paramCount = parameters.Count;
dp.SetupDataProvider(editor.FileName, editor.ActiveTextAreaControl.TextArea);
List<IMethodOrIndexer> methods = dp.Methods;
List<IMethodOrProperty> methods = dp.Methods;
if (methods.Count == 0) return;
bool overloadIsSure;
if (methods.Count == 1) {
@ -140,7 +146,7 @@ namespace VBNetBinding @@ -140,7 +146,7 @@ namespace VBNetBinding
}
editor.ShowInsightWindow(dp);
if (overloadIsSure) {
IMethodOrIndexer method = methods[dp.DefaultIndex];
IMethodOrProperty method = methods[dp.DefaultIndex];
if (paramCount < method.Parameters.Count) {
IParameter param = method.Parameters[paramCount];
ProvideContextCompletion(editor, param.ReturnType, charTyped);

2
src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{63B6CA43-58D0-4BF0-9D4F-1ABE4009E488}</ProjectGuid>
<ProjectGuid>{6B717BD1-CD5E-498C-A42E-9E6A4584DC48}</ProjectGuid>
<RootNamespace>ICSharpCode.XmlEditor</RootNamespace>
<AssemblyName>XmlEditor</AssemblyName>
<OutputType>Library</OutputType>

3
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -105,10 +105,8 @@ @@ -105,10 +105,8 @@
<Compile Include="Src\Dom\IUsing.cs" />
<Compile Include="Src\Dom\ModifierEnum.cs" />
<Compile Include="Src\Dom\IDecoration.cs" />
<Compile Include="Src\Dom\IIndexer.cs" />
<Compile Include="Src\Dom\ParameterModifiers.cs" />
<Compile Include="Src\Dom\Implementations\AbstractDecoration.cs" />
<Compile Include="Src\Dom\Implementations\DefaultIndexer.cs" />
<Compile Include="Src\Dom\Implementations\DefaultUsing.cs" />
<Compile Include="Src\Dom\IParser.cs" />
<Compile Include="Src\Dom\ReflectionLayer\ReflectionClass.cs" />
@ -118,7 +116,6 @@ @@ -118,7 +116,6 @@
<Compile Include="Src\Dom\ReflectionLayer\ReflectionParameter.cs" />
<Compile Include="Src\Dom\ReflectionLayer\ReflectionEvent.cs" />
<Compile Include="Src\Dom\ReflectionLayer\ReflectionReturnType.cs" />
<Compile Include="Src\Dom\ReflectionLayer\ReflectionIndexer.cs" />
<Compile Include="Src\Dom\Tag.cs" />
<Compile Include="Src\Services\AmbienceService\IAmbience.cs" />
<Compile Include="Src\Services\AmbienceService\NetAmbience.cs" />

4
src/Main/Base/Project/Src/Dom/IClass.cs

@ -78,10 +78,6 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -78,10 +78,6 @@ namespace ICSharpCode.SharpDevelop.Dom
get;
}
List<IIndexer> Indexer {
get;
}
List<IMethod> Methods {
get;
}

23
src/Main/Base/Project/Src/Dom/IIndexer.cs

@ -1,23 +0,0 @@ @@ -1,23 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Collections.Generic;
namespace ICSharpCode.SharpDevelop.Dom
{
public interface IIndexer: IMethodOrIndexer
{
IRegion GetterRegion {
get;
}
IRegion SetterRegion {
get;
}
}
}

4
src/Main/Base/Project/Src/Dom/IMethod.cs

@ -11,7 +11,7 @@ using System.Collections.Generic; @@ -11,7 +11,7 @@ using System.Collections.Generic;
namespace ICSharpCode.SharpDevelop.Dom
{
public interface IMethodOrIndexer : IMember
public interface IMethodOrProperty : IMember
{
IRegion BodyRegion {
get;
@ -22,7 +22,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -22,7 +22,7 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
public interface IMethod : IMethodOrIndexer
public interface IMethod : IMethodOrProperty
{
List<ITypeParameter> TypeParameters {
get;

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

@ -11,12 +11,8 @@ using System.Reflection; @@ -11,12 +11,8 @@ using System.Reflection;
namespace ICSharpCode.SharpDevelop.Dom
{
public interface IProperty : IMember
public interface IProperty : IMethodOrProperty
{
IRegion BodyRegion {
get;
}
IRegion GetterRegion {
get;
}
@ -33,15 +29,15 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -33,15 +29,15 @@ namespace ICSharpCode.SharpDevelop.Dom
get;
}
IMethod GetterMethod {
bool IsIndexer {
get;
}
IMethod SetterMethod {
IMethod GetterMethod {
get;
}
List<IParameter> Parameters {
IMethod SetterMethod {
get;
}
}

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

@ -105,10 +105,5 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -105,10 +105,5 @@ namespace ICSharpCode.SharpDevelop.Dom
/// Gets all events that can be called on this return type.
/// </summary>
List<IEvent> GetEvents();
/// <summary>
/// Gets all indexers that can be called on this return type.
/// </summary>
List<IIndexer> GetIndexers();
}
}

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

@ -21,7 +21,6 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -21,7 +21,6 @@ namespace ICSharpCode.SharpDevelop.Dom
public abstract List<IProperty> GetProperties();
public abstract List<IField> GetFields();
public abstract List<IEvent> GetEvents();
public abstract List<IIndexer> GetIndexers();
public override bool Equals(object o)
{

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

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
// <file>
// <file>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
@ -63,14 +63,26 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -63,14 +63,26 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
public override List<IIndexer> GetIndexers()
/// <summary>
/// Indexer used exclusively for array return types
/// </summary>
public class ArrayIndexer : DefaultProperty
{
public ArrayIndexer(IReturnType elementType)
: base("Indexer", elementType, ModifierEnum.Public, null, null, ReflectionReturnType.Array.GetUnderlyingClass())
{
IsIndexer = true;
}
}
public override List<IProperty> GetProperties()
{
List<IParameter> p = new List<IParameter>();
List<IProperty> l = base.GetProperties();
ArrayIndexer property = new ArrayIndexer(elementType);
for (int i = 0; i < dimensions; ++i) {
p.Add(new DefaultParameter("index", ReflectionReturnType.Int, null));
property.Parameters.Add(new DefaultParameter("index", ReflectionReturnType.Int, null));
}
List<IIndexer> l = new List<IIndexer>();
l.Add(new DefaultIndexer(elementType, p, ModifierEnum.Public, null, null, BaseType.GetUnderlyingClass()));
l.Add(property);
return l;
}

7
src/Main/Base/Project/Src/Dom/Implementations/CombinedReturnType.cs

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
// <file>
// <file>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
@ -88,11 +88,6 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -88,11 +88,6 @@ namespace ICSharpCode.SharpDevelop.Dom
return Combine<IEvent>(delegate(IReturnType type) { return type.GetEvents(); });
}
public List<IIndexer> GetIndexers()
{
return Combine<IIndexer>(delegate(IReturnType type) { return type.GetIndexers(); });
}
public string FullyQualifiedName {
get {
return fullName;

12
src/Main/Base/Project/Src/Dom/Implementations/CompoundClass.cs

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
// <file>
// <file>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
@ -101,16 +101,6 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -101,16 +101,6 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
public override List<IIndexer> Indexer {
get {
List<IIndexer> l = new List<IIndexer>();
foreach (IClass part in parts) {
l.AddRange(part.Indexer);
}
return l;
}
}
public override List<IMethod> Methods {
get {
List<IMethod> l = new List<IMethod>();

15
src/Main/Base/Project/Src/Dom/Implementations/DefaultClass.cs

@ -30,7 +30,6 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -30,7 +30,6 @@ namespace ICSharpCode.SharpDevelop.Dom
List<IProperty> properties = null;
List<IMethod> methods = null;
List<IEvent> events = null;
List<IIndexer> indexer = null;
List<ITypeParameter> typeParameters = null;
public DefaultClass(ICompilationUnit compilationUnit, string fullyQualifiedName) : base(null)
@ -164,15 +163,6 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -164,15 +163,6 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
public virtual List<IIndexer> Indexer {
get {
if (indexer == null) {
indexer = new List<IIndexer>();
}
return indexer;
}
}
public virtual List<IMethod> Methods {
get {
if (methods == null) {
@ -361,11 +351,6 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -361,11 +351,6 @@ namespace ICSharpCode.SharpDevelop.Dom
return f;
}
}
foreach (IIndexer i in Indexer) {
if (cmp.Equals(i.Name, memberName)) {
return i;
}
}
foreach (IMethod m in Methods) {
if (cmp.Equals(m.Name, memberName)) {
return m;

98
src/Main/Base/Project/Src/Dom/Implementations/DefaultIndexer.cs

@ -1,98 +0,0 @@ @@ -1,98 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Collections.Generic;
namespace ICSharpCode.SharpDevelop.Dom
{
[Serializable]
public class DefaultIndexer : AbstractMember, IIndexer
{
protected IRegion bodyRegion;
protected IRegion getterRegion;
protected IRegion setterRegion;
List<IParameter> parameters;
public override string DocumentationTag {
get {
// TODO: We have to specify the parameters here
return "P:" + this.DotNetName;
}
}
public override IMember Clone()
{
return new DefaultIndexer(ReturnType, DefaultParameter.Clone(this.Parameters), Modifiers, Region, BodyRegion, DeclaringType);
}
public virtual IRegion BodyRegion {
get {
return bodyRegion;
}
}
public IRegion GetterRegion {
get {
return getterRegion;
}
}
public IRegion SetterRegion {
get {
return setterRegion;
}
}
public virtual List<IParameter> Parameters {
get {
if (parameters == null) {
parameters = new List<IParameter>();
}
return parameters;
}
set {
parameters = value;
}
}
public DefaultIndexer(IClass declaringType) : base(declaringType, null)
{
}
public DefaultIndexer(IReturnType type, List<IParameter> parameters, ModifierEnum m, IRegion region, IRegion bodyRegion, IClass declaringType) : this(declaringType)
{
this.ReturnType = type;
this.Parameters = parameters;
this.Region = region;
this.bodyRegion = bodyRegion;
this.Modifiers = m;
}
public virtual int CompareTo(IIndexer value)
{
int cmp;
cmp = base.CompareTo((IDecoration)value);
if (cmp != 0) {
return cmp;
}
if (FullyQualifiedName != null) {
cmp = FullyQualifiedName.CompareTo(value.FullyQualifiedName);
if (cmp != 0) {
return cmp;
}
}
return DiffUtility.Compare(Parameters, value.Parameters);
}
int IComparable.CompareTo(object value) {
return CompareTo((IIndexer)value);
}
}
}

11
src/Main/Base/Project/Src/Dom/Implementations/DefaultProperty.cs

@ -22,6 +22,16 @@ namespace ICSharpCode.SharpDevelop.Dom { @@ -22,6 +22,16 @@ namespace ICSharpCode.SharpDevelop.Dom {
protected IMethod getterMethod;
protected IMethod setterMethod;
List<IParameter> parameters = null;
bool isIndexer;
public bool IsIndexer {
get {
return isIndexer;
}
set {
isIndexer = value;
}
}
public override string DocumentationTag {
get {
@ -39,6 +49,7 @@ namespace ICSharpCode.SharpDevelop.Dom { @@ -39,6 +49,7 @@ namespace ICSharpCode.SharpDevelop.Dom {
{
DefaultProperty p = new DefaultProperty(Name, ReturnType, Modifiers, Region, BodyRegion, DeclaringType);
p.parameters = DefaultParameter.Clone(this.Parameters);
p.isIndexer = this.isIndexer;
return p;
}

9
src/Main/Base/Project/Src/Dom/Implementations/DefaultReturnType.cs

@ -71,6 +71,10 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -71,6 +71,10 @@ namespace ICSharpCode.SharpDevelop.Dom
continue; // ignore explicit interface implementations
foreach (IProperty p in bc.Properties) {
if (p.IsIndexer && bc != c) {
// do not add base class indexers
continue;
}
// do not add methods that were overridden
bool ok = true;
foreach (IProperty oldProperty in l) {
@ -112,11 +116,6 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -112,11 +116,6 @@ namespace ICSharpCode.SharpDevelop.Dom
return l;
}
public override List<IIndexer> GetIndexers()
{
return c.Indexer;
}
public override string FullyQualifiedName {
get {
return c.FullyQualifiedName;

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

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
// <file>
// <file>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
@ -92,12 +92,6 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -92,12 +92,6 @@ namespace ICSharpCode.SharpDevelop.Dom
return (baseType != null) ? baseType.GetEvents() : new List<IEvent>();
}
public virtual List<IIndexer> GetIndexers()
{
IReturnType baseType = BaseType;
return (baseType != null) ? baseType.GetIndexers() : new List<IIndexer>();
}
public abstract bool IsDefaultReturnType {
get;
}

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

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
// <file>
// <file>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
@ -198,21 +198,6 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -198,21 +198,6 @@ namespace ICSharpCode.SharpDevelop.Dom
return l;
}
public override List<IIndexer> GetIndexers()
{
List<IIndexer> l = baseType.GetIndexers();
for (int i = 0; i < l.Count; ++i) {
if (CheckReturnType(l[i].ReturnType) || CheckParameters(l[i].Parameters)) {
l[i] = (IIndexer)l[i].Clone();
l[i].ReturnType = TranslateType(l[i].ReturnType);
for (int j = 0; j < l[i].Parameters.Count; ++j) {
l[i].Parameters[j].ReturnType = TranslateType(l[i].Parameters[j].ReturnType);
}
}
}
return l;
}
public override bool IsDefaultReturnType {
get {
return false;

8
src/Main/Base/Project/Src/Dom/LanguageProperties.cs

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
// <file>
// <file>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
@ -61,6 +61,9 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -61,6 +61,9 @@ namespace ICSharpCode.SharpDevelop.Dom
public virtual bool ShowMember(IMember member, bool showStatic)
{
if (member is IProperty && ((IProperty)member).IsIndexer) {
return false;
}
return member.IsStatic == showStatic;
}
@ -78,6 +81,9 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -78,6 +81,9 @@ namespace ICSharpCode.SharpDevelop.Dom
public override bool ShowMember(IMember member, bool showStatic)
{
if (member is ArrayReturnType.ArrayIndexer) {
return false;
}
return member.IsStatic || !showStatic;
}

8
src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs

@ -543,17 +543,17 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -543,17 +543,17 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
{
DefaultRegion region = GetRegion(indexerDeclaration.StartLocation, indexerDeclaration.EndLocation);
DefaultRegion bodyRegion = GetRegion(indexerDeclaration.BodyStart, indexerDeclaration.BodyEnd);
List<IParameter> parameters = new List<IParameter>();
DefaultIndexer i = new DefaultIndexer(CreateReturnType(indexerDeclaration.TypeReference), parameters, ConvertModifier(indexerDeclaration.Modifier), region, bodyRegion, GetCurrentClass());
DefaultProperty i = new DefaultProperty("Indexer", CreateReturnType(indexerDeclaration.TypeReference), ConvertModifier(indexerDeclaration.Modifier), region, bodyRegion, GetCurrentClass());
i.IsIndexer = true;
i.Documentation = GetDocumentation(region.BeginLine);
i.Attributes.AddRange(VisitAttributes(indexerDeclaration.Attributes));
if (indexerDeclaration.Parameters != null) {
foreach (AST.ParameterDeclarationExpression par in indexerDeclaration.Parameters) {
parameters.Add(CreateParameter(par));
i.Parameters.Add(CreateParameter(par));
}
}
DefaultClass c = GetCurrentClass();
c.Indexer.Add(i);
c.Properties.Add(i);
return null;
}

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

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
// <file>
// <file>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="Andrea Paatz" email="andrea@icsharpcode.net"/>
@ -404,12 +404,8 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -404,12 +404,8 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
int startLine = member.Region.BeginLine;
if (startLine < 1) return null;
IRegion bodyRegion;
if (member is IMethod) {
bodyRegion = ((IMethod)member).BodyRegion;
} else if (member is IProperty) {
bodyRegion = ((IProperty)member).BodyRegion;
} else if (member is IIndexer) {
bodyRegion = ((IIndexer)member).BodyRegion;
if (member is IMethodOrProperty) {
bodyRegion = ((IMethodOrProperty)member).BodyRegion;
} else if (member is IEvent) {
bodyRegion = ((IEvent)member).BodyRegion;
} else {
@ -663,11 +659,6 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -663,11 +659,6 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
return property;
}
}
foreach (IIndexer indexer in callingClass.Indexer) {
if (indexer.BodyRegion != null && indexer.BodyRegion.IsInside(caretLine, caretColumn)) {
return indexer;
}
}
return null;
}
@ -858,7 +849,6 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -858,7 +849,6 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
c2.Methods.AddRange(c.Methods);
c2.Fields.AddRange(c.Fields);
c2.Properties.AddRange(c.Properties);
c2.Indexer.AddRange(c.Indexer);
c2.Events.AddRange(c.Events);
return c2;
}

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

@ -90,7 +90,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -90,7 +90,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
public override object Visit(IndexerExpression indexerExpression, object data)
{
IIndexer i = GetIndexer(indexerExpression, data);
IProperty i = GetIndexer(indexerExpression, data);
if (i != null)
return i.ReturnType;
else
@ -110,7 +110,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -110,7 +110,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
types[i] = ((Expression)arguments[i]).AcceptVisitor(this, data) as IReturnType;
}
bool tmp;
List<IMethodOrIndexer> methodList = methods.ConvertAll<IMethodOrIndexer>(delegate (IMethod m) { return m; });
List<IMethodOrProperty> methodList = methods.ConvertAll<IMethodOrProperty>(delegate (IMethod m) { return m; });
return (IMethod)methods[FindOverload(methodList, types, true, out tmp)];
}
@ -125,7 +125,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -125,7 +125,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
/// <param name="singleBestOverload">Returns true when the overload returned is
/// the only overload that had the highest score or false when there were
/// multiple overloads with an equal score.</param>
public static int FindOverload(List<IMethodOrIndexer> methods, IReturnType[] types, bool forceParameterCount, out bool singleBestOverload)
public static int FindOverload(List<IMethodOrProperty> methods, IReturnType[] types, bool forceParameterCount, out bool singleBestOverload)
{
singleBestOverload = true;
if (methods.Count == 0)
@ -133,12 +133,12 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -133,12 +133,12 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
if (methods.Count == 1)
return 0;
IMethodOrIndexer bestMethod = methods[0];
IMethodOrProperty bestMethod = methods[0];
int bestIndex = 0;
int bestScore = ScoreOverload(bestMethod, types, forceParameterCount);
for (int i = 1; i < methods.Count; ++i) {
IMethodOrIndexer method = methods[i];
IMethodOrProperty method = methods[i];
int score = ScoreOverload(method, types, forceParameterCount);
if (score > bestScore) {
bestScore = score;
@ -168,7 +168,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -168,7 +168,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
/// between -1 for no matches and types.Length - 1 for all matches.
/// When the parameter count didn't match, score is -(Difference between parameter counts)
/// </returns>
public static int ScoreOverload(IMethodOrIndexer method, IReturnType[] types, bool forceParameterCount)
public static int ScoreOverload(IMethodOrProperty method, IReturnType[] types, bool forceParameterCount)
{
if (method == null) return -1;
if (forceParameterCount
@ -212,13 +212,18 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -212,13 +212,18 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
return null;
}
public IIndexer GetIndexer(IndexerExpression indexerExpression, object data)
public IProperty GetIndexer(IndexerExpression indexerExpression, object data)
{
IReturnType type = (IReturnType)indexerExpression.TargetObject.AcceptVisitor(this, data);
if (type == null) {
return null;
}
List<IIndexer> indexers = type.GetIndexers();
List<IProperty> indexers = type.GetProperties();
// remove non-indexers:
for (int i = 0; i < indexers.Count; i++) {
if (!indexers[i].IsIndexer)
indexers.RemoveAt(i--);
}
IReturnType[] parameters = new IReturnType[indexerExpression.Indices.Count];
for (int i = 0; i < parameters.Length; i++) {
Expression expr = indexerExpression.Indices[i] as Expression;
@ -226,7 +231,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -226,7 +231,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
parameters[i] = (IReturnType)expr.AcceptVisitor(this, data);
}
bool tmp;
int num = FindOverload(new List<IMethodOrIndexer>(indexers.ToArray()), parameters, true, out tmp);
int num = FindOverload(new List<IMethodOrProperty>(indexers.ToArray()), parameters, true, out tmp);
if (num < 0)
return null;
else
@ -586,10 +591,6 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -586,10 +591,6 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
public override List<IEvent> GetEvents() {
return new List<IEvent>();
}
public override List<IIndexer> GetIndexers() {
return new List<IIndexer>();
}
}
static IReturnType CreateReturnType(Type type)

30
src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionClass.cs

@ -56,42 +56,15 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -56,42 +56,15 @@ namespace ICSharpCode.SharpDevelop.Dom
get {
List<IProperty> properties = new List<IProperty>();
foreach (PropertyInfo propertyInfo in type.GetProperties(flags)) {
ParameterInfo[] p = null;
// we may not get the permission to access the index parameters
try {
p = propertyInfo.GetIndexParameters();
} catch (Exception) {}
if (p == null || p.Length == 0) {
ReflectionProperty prop = new ReflectionProperty(propertyInfo, this);
if (prop.IsPublic || prop.IsProtected)
properties.Add(prop);
}
}
return properties;
}
}
public override List<IIndexer> Indexer {
get {
List<IIndexer> indexer = new List<IIndexer>();
foreach (PropertyInfo propertyInfo in type.GetProperties(flags)) {
ParameterInfo[] p = null;
// we may not get the permission to access the index parameters
try {
p = propertyInfo.GetIndexParameters();
} catch (Exception) {}
if (p != null && p.Length != 0) {
indexer.Add(new ReflectionIndexer(propertyInfo, this));
}
}
return indexer;
}
}
public override List<IMethod> Methods {
get {
List<IMethod> methods = new List<IMethod>();
@ -154,9 +127,6 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -154,9 +127,6 @@ namespace ICSharpCode.SharpDevelop.Dom
public override List<IEvent> GetEvents() {
return new List<IEvent>(1);
}
public override List<IIndexer> GetIndexers() {
return new List<IIndexer>(1);
}
}
#endregion

11
src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionField.cs

@ -16,18 +16,9 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -16,18 +16,9 @@ namespace ICSharpCode.SharpDevelop.Dom
[Serializable]
public class ReflectionField : DefaultField
{
FieldInfo fieldInfo;
public override IReturnType ReturnType {
get {
return ReflectionReturnType.Create(this, fieldInfo.FieldType, false);
}
set {
}
}
public ReflectionField(FieldInfo fieldInfo, IClass declaringType) : base(declaringType, fieldInfo.Name)
{
this.fieldInfo = fieldInfo;
this.ReturnType = ReflectionReturnType.Create(this, fieldInfo.FieldType, false);
ModifierEnum modifiers = ModifierEnum.None;
if (fieldInfo.IsInitOnly) {

98
src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionIndexer.cs

@ -1,98 +0,0 @@ @@ -1,98 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.Xml;
namespace ICSharpCode.SharpDevelop.Dom
{
[Serializable]
public class ReflectionIndexer : DefaultIndexer
{
PropertyInfo propertyInfo;
public override IReturnType ReturnType {
get {
return ReflectionReturnType.Create(this, propertyInfo.PropertyType, false);
}
set {
}
}
public override List<IParameter> Parameters {
get {
List<IParameter> parameters = new List<IParameter>();
foreach (ParameterInfo parameterInfo in propertyInfo.GetIndexParameters()) {
parameters.Add(new ReflectionParameter(parameterInfo, this));
}
return parameters;
}
set {
}
}
public ReflectionIndexer(PropertyInfo propertyInfo, IClass declaringType) : base(declaringType)
{
this.propertyInfo = propertyInfo;
// show the abstract layer that we have getter & setters
if (propertyInfo.CanRead) {
getterRegion = new DefaultRegion(0, 0, 0, 0);
} else {
getterRegion = null;
}
if (propertyInfo.CanWrite) {
setterRegion = new DefaultRegion(0, 0, 0, 0);
} else {
setterRegion = null;
}
MethodInfo methodBase = null;
try {
methodBase = propertyInfo.GetGetMethod(true);
} catch (Exception) {}
if (methodBase == null) {
try {
methodBase = propertyInfo.GetSetMethod(true);
} catch (Exception) {}
}
ModifierEnum modifiers = ModifierEnum.None;
if (methodBase != null) {
if (methodBase.IsStatic) {
modifiers |= ModifierEnum.Static;
}
if (methodBase.IsAssembly) {
modifiers |= ModifierEnum.Internal;
}
if (methodBase.IsPrivate) { // I assume that private is used most and public last (at least should be)
modifiers |= ModifierEnum.Private;
} else if (methodBase.IsFamily) {
modifiers |= ModifierEnum.Protected;
} else if (methodBase.IsPublic) {
modifiers |= ModifierEnum.Public;
} else if (methodBase.IsFamilyOrAssembly) {
modifiers |= ModifierEnum.ProtectedOrInternal;
} else if (methodBase.IsFamilyAndAssembly) {
modifiers |= ModifierEnum.Protected;
modifiers |= ModifierEnum.Internal;
}
} else { // assume public property, if no methodBase could be get.
modifiers = ModifierEnum.Public;
}
this.Modifiers = modifiers;
}
}
}

9
src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionMethod.cs

@ -19,7 +19,6 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -19,7 +19,6 @@ namespace ICSharpCode.SharpDevelop.Dom
{
MethodBase methodBase;
public override bool IsConstructor {
get {
return methodBase is ConstructorInfo;
@ -36,18 +35,24 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -36,18 +35,24 @@ namespace ICSharpCode.SharpDevelop.Dom
return null;
}
set {
throw new NotSupportedException();
}
}
List<IParameter> parameters;
public override List<IParameter> Parameters {
get {
List<IParameter> parameters = new List<IParameter>();
if (parameters == null) {
parameters = new List<IParameter>();
foreach (ParameterInfo paramInfo in methodBase.GetParameters()) {
parameters.Add(new ReflectionParameter(paramInfo, this));
}
}
return parameters;
}
set {
throw new NotSupportedException();
}
}

14
src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionParameter.cs

@ -15,21 +15,9 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -15,21 +15,9 @@ namespace ICSharpCode.SharpDevelop.Dom
[Serializable]
public class ReflectionParameter : DefaultParameter
{
ParameterInfo parameterInfo;
IMember member;
public override IReturnType ReturnType {
get {
return ReflectionReturnType.Create(member, parameterInfo.ParameterType, false);
}
set {
}
}
public ReflectionParameter(ParameterInfo parameterInfo, IMember member) : base(parameterInfo.Name)
{
this.parameterInfo = parameterInfo;
this.member = member;
this.ReturnType = ReflectionReturnType.Create(member, parameterInfo.ParameterType, false);
Type type = parameterInfo.ParameterType;

15
src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionProperty.cs

@ -41,6 +41,21 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -41,6 +41,21 @@ namespace ICSharpCode.SharpDevelop.Dom
SetterRegion = null;
}
ParameterInfo[] parameterInfo = propertyInfo.GetIndexParameters();
if (parameterInfo != null && parameterInfo.Length > 0) {
// check if this property is an indexer (=default member of parent class)
foreach (MemberInfo memberInfo in propertyInfo.DeclaringType.GetDefaultMembers()) {
if (memberInfo == propertyInfo) {
this.IsIndexer = true;
break;
}
}
// there are only few properties with parameters, so we can load them immediately
foreach (ParameterInfo info in parameterInfo) {
this.Parameters.Add(new ReflectionParameter(info, this));
}
}
MethodInfo methodBase = null;
try {
methodBase = propertyInfo.GetGetMethod(true);

1
src/Main/Base/Project/Src/Services/AmbienceService/AbstractAmbience.cs

@ -90,7 +90,6 @@ namespace ICSharpCode.Core @@ -90,7 +90,6 @@ namespace ICSharpCode.Core
public abstract string Convert(IField c);
public abstract string Convert(IProperty property);
public abstract string Convert(IEvent e);
public abstract string Convert(IIndexer indexer);
public abstract string Convert(IMethod m);
public abstract string ConvertEnd(IMethod m);
public abstract string Convert(IParameter param);

5
src/Main/Base/Project/Src/Services/AmbienceService/AmbienceReflectionDecorator.cs

@ -59,11 +59,6 @@ namespace ICSharpCode.Core @@ -59,11 +59,6 @@ namespace ICSharpCode.Core
return conv.Convert(e);
}
public string Convert(IIndexer indexer)
{
return conv.Convert(indexer);
}
public string Convert(IMethod m)
{
return conv.Convert(m);

1
src/Main/Base/Project/Src/Services/AmbienceService/IAmbience.cs

@ -58,7 +58,6 @@ namespace ICSharpCode.Core @@ -58,7 +58,6 @@ namespace ICSharpCode.Core
string Convert(IClass c);
string ConvertEnd(IClass c);
string Convert(IIndexer c);
string Convert(IField field);
string Convert(IProperty property);
string Convert(IEvent e);

31
src/Main/Base/Project/Src/Services/AmbienceService/NetAmbience.cs

@ -129,8 +129,10 @@ namespace ICSharpCode.Core @@ -129,8 +129,10 @@ namespace ICSharpCode.Core
{
StringBuilder builder = new StringBuilder();
if (ShowModifiers) {
builder.Append("Property");
builder.Append(' ');
if (property.IsIndexer)
builder.Append("Indexer ");
else
builder.Append("Property ");
}
if (UseFullyQualifiedNames) {
@ -177,31 +179,6 @@ namespace ICSharpCode.Core @@ -177,31 +179,6 @@ namespace ICSharpCode.Core
return builder.ToString();
}
public override string Convert(IIndexer m)
{
StringBuilder builder = new StringBuilder();
if (ShowModifiers) {
builder.Append("Indexer ");
}
builder.Append("Item");
builder.Append('(');
for (int i = 0; i < m.Parameters.Count; ++i) {
builder.Append(Convert(m.Parameters[i]));
if (i + 1 < m.Parameters.Count) {
builder.Append(", ");
}
}
builder.Append(")");
if (m.ReturnType != null && ShowReturnType) {
builder.Append(" : ");
builder.Append(Convert(m.ReturnType));
}
return builder.ToString();
}
public override string Convert(IMethod m)
{
StringBuilder builder = new StringBuilder();

14
src/Main/Base/Project/Src/Services/ClassBrowserIcons/ClassBrowserIconService.cs

@ -67,8 +67,6 @@ namespace ICSharpCode.Core @@ -67,8 +67,6 @@ namespace ICSharpCode.Core
{
if (member is IMethod)
return GetIcon(member as IMethod);
else if (member is IIndexer)
return GetIcon(member as IIndexer);
else if (member is IProperty)
return GetIcon(member as IProperty);
else if (member is IField)
@ -84,14 +82,12 @@ namespace ICSharpCode.Core @@ -84,14 +82,12 @@ namespace ICSharpCode.Core
return MethodIndex + GetModifierOffset(method.Modifiers);
}
public static int GetIcon(IIndexer method)
public static int GetIcon(IProperty property)
{
return IndexerIndex + GetModifierOffset(method.Modifiers);
}
public static int GetIcon(IProperty method)
{
return PropertyIndex + GetModifierOffset(method.Modifiers);
if (property.IsIndexer)
return IndexerIndex + GetModifierOffset(property.Modifiers);
else
return PropertyIndex + GetModifierOffset(property.Modifiers);
}
public static int GetIcon(IField field)

4
src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs

@ -422,9 +422,7 @@ namespace ICSharpCode.Core @@ -422,9 +422,7 @@ namespace ICSharpCode.Core
{
bool tryDisplayValue = false;
StringBuilder text = new StringBuilder();
if (member is IIndexer) {
text.Append(ambience.Convert(member as IIndexer));
} else if (member is IField) {
if (member is IField) {
text.Append(ambience.Convert(member as IField));
tryDisplayValue = true;
} else if (member is IProperty) {

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

@ -156,11 +156,12 @@ namespace ICSharpCode.SharpDevelop.Refactoring @@ -156,11 +156,12 @@ namespace ICSharpCode.SharpDevelop.Refactoring
// TODO: Optimize by re-using the same resolver if multiple expressions were
// found in this file (the resolver should parse all methods at once)
ResolveResult rr = ParserService.Resolve(expr, position.Y, position.X, fileName, fileContent);
MemberResolveResult mrr = rr as MemberResolveResult;
if (member != null) {
// find reference to member
if (IsReferenceToMember(member, rr)) {
list.Add(new Reference(fileName, pos, searchedText.Length, expr.Expression, rr));
} else if (rr is MemberResolveResult && (rr as MemberResolveResult).ResolvedMember is IIndexer) {
} else if (mrr != null && mrr.ResolvedMember is IProperty && ((IProperty)mrr.ResolvedMember).IsIndexer) {
// we got an indexer call as expression ("objectList[0].ToString()[2]")
// strip the index from the expression to resolve the underlying expression
string newExpr = expressionFinder.RemoveLastPart(expr.Expression);
@ -171,7 +172,6 @@ namespace ICSharpCode.SharpDevelop.Refactoring @@ -171,7 +172,6 @@ namespace ICSharpCode.SharpDevelop.Refactoring
}
} else {
// find reference to class
MemberResolveResult mrr = rr as MemberResolveResult;
if (mrr != null) {
if (mrr.ResolvedMember is IMethod && ((IMethod)mrr.ResolvedMember).IsConstructor) {
if (mrr.ResolvedMember.DeclaringType.FullyQualifiedName == parentClass.FullyQualifiedName) {

4
src/Main/Base/Project/Src/TextEditor/Gui/Editor/InsightWindow/IndexerInsightDataProvider.cs

@ -43,10 +43,12 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -43,10 +43,12 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
IReturnType type = result.ResolvedType;
if (type == null)
return;
foreach (IIndexer i in type.GetIndexers()) {
foreach (IProperty i in type.GetProperties()) {
if (i.IsIndexer) {
methods.Add(i);
}
}
}
/*
public bool CaretOffsetChanged()

8
src/Main/Base/Project/Src/TextEditor/Gui/Editor/InsightWindow/MethodInsightDataProvider.cs

@ -25,9 +25,9 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -25,9 +25,9 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
string fileName = null;
IDocument document = null;
TextArea textArea = null;
protected List<IMethodOrIndexer> methods = new List<IMethodOrIndexer>();
protected List<IMethodOrProperty> methods = new List<IMethodOrProperty>();
public List<IMethodOrIndexer> Methods {
public List<IMethodOrProperty> Methods {
get {
return methods;
}
@ -59,8 +59,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -59,8 +59,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
string text;
if (method is IMethod) {
text = conv.Convert(method as IMethod);
} else if (method is IIndexer) {
text = conv.Convert(method as IIndexer);
} else if (method is IProperty) {
text = conv.Convert(method as IProperty);
} else {
text = method.ToString();
}

7
src/Main/Base/Project/Src/TextEditor/Gui/Editor/ParserFoldingStrategy.cs

@ -40,13 +40,6 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -40,13 +40,6 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
}
}
foreach (IIndexer indexer in c.Indexer) {
if (indexer.BodyRegion != null && indexer.Region.EndLine < indexer.BodyRegion.EndLine) {
foldMarkers.Add(new FoldMarker(document, indexer.Region.EndLine - 1, indexer.Region.EndColumn - 1,
indexer.BodyRegion.EndLine- 1, indexer.BodyRegion.EndColumn - 1, FoldType.MemberBody));
}
}
foreach (IProperty p in c.Properties) {
if (p.BodyRegion != null && p.Region.EndLine < p.BodyRegion.EndLine) {
foldMarkers.Add(new FoldMarker(document, p.Region.EndLine - 1, p.Region.EndColumn - 1,

21
src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
// <file>
// <file>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="none" email=""/>
@ -119,16 +119,12 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -119,16 +119,12 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
}
bool isInside = member.Region.BeginLine - 1 <= lineNumber;
if (member is IMethod) {
if (((IMethod)member).BodyRegion.EndLine >= 0) {
isInside &= lineNumber <= ((IMethod)member).BodyRegion.EndLine - 1;
if (member is IMethodOrProperty) {
if (((IMethodOrProperty)member).BodyRegion.EndLine >= 0) {
isInside &= lineNumber <= ((IMethodOrProperty)member).BodyRegion.EndLine - 1;
} else {
return member.Region.BeginLine - 1 == lineNumber;
}
} else if (member is IProperty) {
isInside &= lineNumber <= ((IProperty)member).BodyRegion.EndLine - 1;
} else if (member is IIndexer) {
isInside &= lineNumber <= ((IIndexer)member).BodyRegion.EndLine - 1;
} else {
isInside &= lineNumber <= member.Region.EndLine - 1;
}
@ -171,9 +167,6 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -171,9 +167,6 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
if (item is IProperty) {
return ambience.Convert((IProperty)item);
}
if (item is IIndexer) {
return ambience.Convert((IIndexer)item);
}
if (item is IField) {
return ambience.Convert((IField)item);
}
@ -365,12 +358,6 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -365,12 +358,6 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
items.Sort(lastIndex, c.Properties.Count, comparer);
lastIndex = items.Count;
foreach (IIndexer indexer in c.Indexer) {
items.Add(new ComboBoxItem(indexer, indexer.Name, ClassBrowserIconService.GetIcon(indexer), partialMode ? currentPart.Indexer.Contains(indexer) : true));
}
items.Sort(lastIndex, c.Indexer.Count, comparer);
lastIndex = items.Count;
foreach (IField f in c.Fields) {
items.Add(new ComboBoxItem(f, f.Name, ClassBrowserIconService.GetIcon(f), partialMode ? currentPart.Fields.Contains(f) : true));
}

Loading…
Cancel
Save