diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpAmbience.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpAmbience.cs
index 6062d2b7f3..de72805f21 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpAmbience.cs
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpAmbience.cs
@@ -304,22 +304,24 @@ namespace ICSharpCode.Core
builder.Append(' ');
}
- if (IncludeHTMLMarkup) {
- builder.Append("");
- }
-
- if (UseFullyQualifiedMemberNames) {
- builder.Append(property.FullyQualifiedName);
+ if (property.IsIndexer) {
+ builder.Append("this");
} else {
- builder.Append(property.Name);
- }
-
- if (IncludeHTMLMarkup) {
- builder.Append("");
+ if (IncludeHTMLMarkup) {
+ builder.Append("");
+ }
+ if (UseFullyQualifiedMemberNames) {
+ builder.Append(property.FullyQualifiedName);
+ } else {
+ builder.Append(property.Name);
+ }
+ if (IncludeHTMLMarkup) {
+ builder.Append("");
+ }
}
if (property.Parameters.Count > 0) {
- builder.Append("(");
+ builder.Append(property.IsIndexer ? '[' : '(');
if (IncludeHTMLMarkup) builder.Append("
");
for (int i = 0; i < property.Parameters.Count; ++i) {
@@ -331,7 +333,7 @@ namespace ICSharpCode.Core
if (IncludeHTMLMarkup) builder.Append("
");
}
- builder.Append(')');
+ builder.Append(property.IsIndexer ? ']' : ')');
}
if (IncludeBodies) {
@@ -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("");
- }
-
- if (ShowModifiers) {
- if (m.IsStatic) {
- builder.Append("static ");
- }
- }
-
- if (IncludeHTMLMarkup) {
- builder.Append("");
- }
-
- if (m.ReturnType != null && ShowReturnType) {
- builder.Append(Convert(m.ReturnType));
- builder.Append(' ');
- }
-
- if (IncludeHTMLMarkup) {
- builder.Append("");
- }
-
- if (UseFullyQualifiedMemberNames) {
- builder.Append(m.FullyQualifiedName);
- } else {
- builder.Append(m.Name);
- }
-
- if (IncludeHTMLMarkup) {
- builder.Append("");
- }
-
- builder.Append("this[");
- if (IncludeHTMLMarkup) builder.Append("
");
-
- for (int i = 0; i < m.Parameters.Count; ++i) {
- if (IncludeHTMLMarkup) builder.Append(" ");
- builder.Append(Convert(m.Parameters[i]));
- if (i + 1 < m.Parameters.Count) {
- builder.Append(", ");
- }
- if (IncludeHTMLMarkup) builder.Append("
");
- }
-
- builder.Append(']');
-
- if (IncludeBodies) builder.Append(";");
-
- return builder.ToString();
- }
-
public override string Convert(IMethod m)
{
StringBuilder builder = new StringBuilder();
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpCompletionBinding.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpCompletionBinding.cs
index 48d1cdea11..2e198479c1 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpCompletionBinding.cs
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpCompletionBinding.cs
@@ -1,4 +1,4 @@
-//
+//
// 2002-2005 AlphaSierraPapa
// GNU General Public License
//
@@ -123,7 +123,7 @@ namespace CSharpBinding
{
int paramCount = parameters.Count;
dp.SetupDataProvider(editor.FileName, editor.ActiveTextAreaControl.TextArea);
- List methods = dp.Methods;
+ List methods = dp.Methods;
if (methods.Count == 0) return;
bool overloadIsSure;
if (methods.Count == 1) {
@@ -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);
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs
index 4597b5827d..5cab44f689 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs
@@ -1,4 +1,4 @@
-//
+//
// 2002-2005 AlphaSierraPapa
// GNU General Public License
//
@@ -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;
diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetAmbience.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetAmbience.cs
index 2f1944be5c..b5eab67c66 100644
--- a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetAmbience.cs
+++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetAmbience.cs
@@ -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
builder.Append(GetModifier(property));
}
+ if (property.IsIndexer) {
+ builder.Append("Default ");
+ }
+
if (property.CanGet && !property.CanSet) {
builder.Append("ReadOnly ");
}
@@ -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("");
- }
-
- if (UseFullyQualifiedMemberNames) {
- builder.Append(m.FullyQualifiedName);
- } else {
- builder.Append(m.Name);
- }
-
- if (IncludeHTMLMarkup) {
- builder.Append("");
- }
-
- builder.Append("Item(");
- if (IncludeHTMLMarkup) builder.Append("
");
-
- for (int i = 0; i < m.Parameters.Count; ++i) {
- if (IncludeHTMLMarkup) builder.Append(" ");
- builder.Append(Convert(m.Parameters[i]));
- if (i + 1 < m.Parameters.Count) {
- builder.Append(", ");
- }
- if (IncludeHTMLMarkup) builder.Append("
");
- }
-
- 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
}
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
} 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]));
diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetCompletionBinding.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetCompletionBinding.cs
index a318aaeadc..95eff393f9 100644
--- a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetCompletionBinding.cs
+++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetCompletionBinding.cs
@@ -1,4 +1,4 @@
-//
+//
// 2002-2005 AlphaSierraPapa
// GNU General Public License
//
@@ -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
{
int paramCount = parameters.Count;
dp.SetupDataProvider(editor.FileName, editor.ActiveTextAreaControl.TextArea);
- List methods = dp.Methods;
+ List methods = dp.Methods;
if (methods.Count == 0) return;
bool overloadIsSure;
if (methods.Count == 1) {
@@ -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);
diff --git a/src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj b/src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj
index ce6ddda5be..95fb4c504f 100644
--- a/src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj
+++ b/src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj
@@ -3,7 +3,7 @@
Debug
AnyCPU
2.0
- {63B6CA43-58D0-4BF0-9D4F-1ABE4009E488}
+ {6B717BD1-CD5E-498C-A42E-9E6A4584DC48}
ICSharpCode.XmlEditor
XmlEditor
Library
diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
index 57523c1ee7..db0d291053 100644
--- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
+++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
@@ -105,10 +105,8 @@
-
-
@@ -118,7 +116,6 @@
-
diff --git a/src/Main/Base/Project/Src/Dom/IClass.cs b/src/Main/Base/Project/Src/Dom/IClass.cs
index 03b09117fd..e9b0fbe69b 100644
--- a/src/Main/Base/Project/Src/Dom/IClass.cs
+++ b/src/Main/Base/Project/Src/Dom/IClass.cs
@@ -78,10 +78,6 @@ namespace ICSharpCode.SharpDevelop.Dom
get;
}
- List Indexer {
- get;
- }
-
List Methods {
get;
}
diff --git a/src/Main/Base/Project/Src/Dom/IIndexer.cs b/src/Main/Base/Project/Src/Dom/IIndexer.cs
deleted file mode 100644
index 6ef149c203..0000000000
--- a/src/Main/Base/Project/Src/Dom/IIndexer.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-//
-// 2002-2005 AlphaSierraPapa
-// GNU General Public License
-//
-// $Revision$
-//
-
-using System;
-using System.Collections.Generic;
-
-namespace ICSharpCode.SharpDevelop.Dom
-{
- public interface IIndexer: IMethodOrIndexer
- {
- IRegion GetterRegion {
- get;
- }
-
- IRegion SetterRegion {
- get;
- }
- }
-}
diff --git a/src/Main/Base/Project/Src/Dom/IMethod.cs b/src/Main/Base/Project/Src/Dom/IMethod.cs
index 486d0a298e..02bf800ea1 100644
--- a/src/Main/Base/Project/Src/Dom/IMethod.cs
+++ b/src/Main/Base/Project/Src/Dom/IMethod.cs
@@ -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
}
}
- public interface IMethod : IMethodOrIndexer
+ public interface IMethod : IMethodOrProperty
{
List TypeParameters {
get;
diff --git a/src/Main/Base/Project/Src/Dom/IProperty.cs b/src/Main/Base/Project/Src/Dom/IProperty.cs
index a290295fad..2b14cdcd9e 100644
--- a/src/Main/Base/Project/Src/Dom/IProperty.cs
+++ b/src/Main/Base/Project/Src/Dom/IProperty.cs
@@ -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,6 +29,10 @@ namespace ICSharpCode.SharpDevelop.Dom
get;
}
+ bool IsIndexer {
+ get;
+ }
+
IMethod GetterMethod {
get;
}
@@ -40,9 +40,5 @@ namespace ICSharpCode.SharpDevelop.Dom
IMethod SetterMethod {
get;
}
-
- List Parameters {
- get;
- }
}
}
diff --git a/src/Main/Base/Project/Src/Dom/IReturnType.cs b/src/Main/Base/Project/Src/Dom/IReturnType.cs
index 9d24a50b1f..7a1d4c4f90 100644
--- a/src/Main/Base/Project/Src/Dom/IReturnType.cs
+++ b/src/Main/Base/Project/Src/Dom/IReturnType.cs
@@ -105,10 +105,5 @@ namespace ICSharpCode.SharpDevelop.Dom
/// Gets all events that can be called on this return type.
///
List GetEvents();
-
- ///
- /// Gets all indexers that can be called on this return type.
- ///
- List GetIndexers();
}
}
diff --git a/src/Main/Base/Project/Src/Dom/Implementations/AbstractReturnType.cs b/src/Main/Base/Project/Src/Dom/Implementations/AbstractReturnType.cs
index 4961dc5b5f..783c33b9f1 100644
--- a/src/Main/Base/Project/Src/Dom/Implementations/AbstractReturnType.cs
+++ b/src/Main/Base/Project/Src/Dom/Implementations/AbstractReturnType.cs
@@ -21,7 +21,6 @@ namespace ICSharpCode.SharpDevelop.Dom
public abstract List GetProperties();
public abstract List GetFields();
public abstract List GetEvents();
- public abstract List GetIndexers();
public override bool Equals(object o)
{
diff --git a/src/Main/Base/Project/Src/Dom/Implementations/ArrayReturnType.cs b/src/Main/Base/Project/Src/Dom/Implementations/ArrayReturnType.cs
index 791c622672..f043881e9c 100644
--- a/src/Main/Base/Project/Src/Dom/Implementations/ArrayReturnType.cs
+++ b/src/Main/Base/Project/Src/Dom/Implementations/ArrayReturnType.cs
@@ -1,4 +1,4 @@
-//
+//
// 2002-2005 AlphaSierraPapa
// GNU General Public License
//
@@ -63,14 +63,26 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
- public override List GetIndexers()
+ ///
+ /// Indexer used exclusively for array return types
+ ///
+ public class ArrayIndexer : DefaultProperty
+ {
+ public ArrayIndexer(IReturnType elementType)
+ : base("Indexer", elementType, ModifierEnum.Public, null, null, ReflectionReturnType.Array.GetUnderlyingClass())
+ {
+ IsIndexer = true;
+ }
+ }
+
+ public override List GetProperties()
{
- List p = new List();
+ List 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 l = new List();
- l.Add(new DefaultIndexer(elementType, p, ModifierEnum.Public, null, null, BaseType.GetUnderlyingClass()));
+ l.Add(property);
return l;
}
diff --git a/src/Main/Base/Project/Src/Dom/Implementations/CombinedReturnType.cs b/src/Main/Base/Project/Src/Dom/Implementations/CombinedReturnType.cs
index 9b432572fa..1aeda69faf 100644
--- a/src/Main/Base/Project/Src/Dom/Implementations/CombinedReturnType.cs
+++ b/src/Main/Base/Project/Src/Dom/Implementations/CombinedReturnType.cs
@@ -1,4 +1,4 @@
-//
+//
// 2002-2005 AlphaSierraPapa
// GNU General Public License
//
@@ -88,11 +88,6 @@ namespace ICSharpCode.SharpDevelop.Dom
return Combine(delegate(IReturnType type) { return type.GetEvents(); });
}
- public List GetIndexers()
- {
- return Combine(delegate(IReturnType type) { return type.GetIndexers(); });
- }
-
public string FullyQualifiedName {
get {
return fullName;
diff --git a/src/Main/Base/Project/Src/Dom/Implementations/CompoundClass.cs b/src/Main/Base/Project/Src/Dom/Implementations/CompoundClass.cs
index 490426ceb7..f2bd4bc019 100644
--- a/src/Main/Base/Project/Src/Dom/Implementations/CompoundClass.cs
+++ b/src/Main/Base/Project/Src/Dom/Implementations/CompoundClass.cs
@@ -1,4 +1,4 @@
-//
+//
// 2002-2005 AlphaSierraPapa
// GNU General Public License
//
@@ -101,16 +101,6 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
- public override List Indexer {
- get {
- List l = new List();
- foreach (IClass part in parts) {
- l.AddRange(part.Indexer);
- }
- return l;
- }
- }
-
public override List Methods {
get {
List l = new List();
diff --git a/src/Main/Base/Project/Src/Dom/Implementations/DefaultClass.cs b/src/Main/Base/Project/Src/Dom/Implementations/DefaultClass.cs
index 8f809a9a36..495f183425 100644
--- a/src/Main/Base/Project/Src/Dom/Implementations/DefaultClass.cs
+++ b/src/Main/Base/Project/Src/Dom/Implementations/DefaultClass.cs
@@ -30,7 +30,6 @@ namespace ICSharpCode.SharpDevelop.Dom
List properties = null;
List methods = null;
List events = null;
- List indexer = null;
List typeParameters = null;
public DefaultClass(ICompilationUnit compilationUnit, string fullyQualifiedName) : base(null)
@@ -164,15 +163,6 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
- public virtual List Indexer {
- get {
- if (indexer == null) {
- indexer = new List();
- }
- return indexer;
- }
- }
-
public virtual List Methods {
get {
if (methods == null) {
@@ -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;
diff --git a/src/Main/Base/Project/Src/Dom/Implementations/DefaultIndexer.cs b/src/Main/Base/Project/Src/Dom/Implementations/DefaultIndexer.cs
deleted file mode 100644
index 08d85412a2..0000000000
--- a/src/Main/Base/Project/Src/Dom/Implementations/DefaultIndexer.cs
+++ /dev/null
@@ -1,98 +0,0 @@
-//
-// 2002-2005 AlphaSierraPapa
-// GNU General Public License
-//
-// $Revision$
-//
-
-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 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 Parameters {
- get {
- if (parameters == null) {
- parameters = new List();
- }
- return parameters;
- }
- set {
- parameters = value;
- }
- }
-
- public DefaultIndexer(IClass declaringType) : base(declaringType, null)
- {
- }
-
- public DefaultIndexer(IReturnType type, List 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);
- }
- }
-}
diff --git a/src/Main/Base/Project/Src/Dom/Implementations/DefaultProperty.cs b/src/Main/Base/Project/Src/Dom/Implementations/DefaultProperty.cs
index 48b8076033..c01498a788 100644
--- a/src/Main/Base/Project/Src/Dom/Implementations/DefaultProperty.cs
+++ b/src/Main/Base/Project/Src/Dom/Implementations/DefaultProperty.cs
@@ -22,6 +22,16 @@ namespace ICSharpCode.SharpDevelop.Dom {
protected IMethod getterMethod;
protected IMethod setterMethod;
List 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 {
{
DefaultProperty p = new DefaultProperty(Name, ReturnType, Modifiers, Region, BodyRegion, DeclaringType);
p.parameters = DefaultParameter.Clone(this.Parameters);
+ p.isIndexer = this.isIndexer;
return p;
}
diff --git a/src/Main/Base/Project/Src/Dom/Implementations/DefaultReturnType.cs b/src/Main/Base/Project/Src/Dom/Implementations/DefaultReturnType.cs
index df7a66828b..ccc7e9f419 100644
--- a/src/Main/Base/Project/Src/Dom/Implementations/DefaultReturnType.cs
+++ b/src/Main/Base/Project/Src/Dom/Implementations/DefaultReturnType.cs
@@ -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
return l;
}
- public override List GetIndexers()
- {
- return c.Indexer;
- }
-
public override string FullyQualifiedName {
get {
return c.FullyQualifiedName;
diff --git a/src/Main/Base/Project/Src/Dom/Implementations/ProxyReturnType.cs b/src/Main/Base/Project/Src/Dom/Implementations/ProxyReturnType.cs
index bdbf42e677..67746683ff 100644
--- a/src/Main/Base/Project/Src/Dom/Implementations/ProxyReturnType.cs
+++ b/src/Main/Base/Project/Src/Dom/Implementations/ProxyReturnType.cs
@@ -1,4 +1,4 @@
-//
+//
// 2002-2005 AlphaSierraPapa
// GNU General Public License
//
@@ -92,12 +92,6 @@ namespace ICSharpCode.SharpDevelop.Dom
return (baseType != null) ? baseType.GetEvents() : new List();
}
- public virtual List GetIndexers()
- {
- IReturnType baseType = BaseType;
- return (baseType != null) ? baseType.GetIndexers() : new List();
- }
-
public abstract bool IsDefaultReturnType {
get;
}
diff --git a/src/Main/Base/Project/Src/Dom/Implementations/SpecificReturnType.cs b/src/Main/Base/Project/Src/Dom/Implementations/SpecificReturnType.cs
index 72c980eb79..8cf482f699 100644
--- a/src/Main/Base/Project/Src/Dom/Implementations/SpecificReturnType.cs
+++ b/src/Main/Base/Project/Src/Dom/Implementations/SpecificReturnType.cs
@@ -1,4 +1,4 @@
-//
+//
// 2002-2005 AlphaSierraPapa
// GNU General Public License
//
@@ -198,21 +198,6 @@ namespace ICSharpCode.SharpDevelop.Dom
return l;
}
- public override List GetIndexers()
- {
- List 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;
diff --git a/src/Main/Base/Project/Src/Dom/LanguageProperties.cs b/src/Main/Base/Project/Src/Dom/LanguageProperties.cs
index 44cbcdfe6e..1e455a4185 100644
--- a/src/Main/Base/Project/Src/Dom/LanguageProperties.cs
+++ b/src/Main/Base/Project/Src/Dom/LanguageProperties.cs
@@ -1,4 +1,4 @@
-//
+//
// 2002-2005 AlphaSierraPapa
// GNU General Public License
//
@@ -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
public override bool ShowMember(IMember member, bool showStatic)
{
+ if (member is ArrayReturnType.ArrayIndexer) {
+ return false;
+ }
return member.IsStatic || !showStatic;
}
diff --git a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs
index 412eb31b0b..b4562bdea2 100644
--- a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs
+++ b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs
@@ -543,17 +543,17 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
{
DefaultRegion region = GetRegion(indexerDeclaration.StartLocation, indexerDeclaration.EndLocation);
DefaultRegion bodyRegion = GetRegion(indexerDeclaration.BodyStart, indexerDeclaration.BodyEnd);
- List parameters = new List();
- 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;
}
diff --git a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs
index df0fbdfb11..39dc7e29c6 100644
--- a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs
+++ b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs
@@ -1,4 +1,4 @@
-//
+//
// 2002-2005 AlphaSierraPapa
// GNU General Public License
//
@@ -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
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
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;
}
diff --git a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs
index e7eeee6a14..2ecfa38509 100644
--- a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs
+++ b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs
@@ -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
types[i] = ((Expression)arguments[i]).AcceptVisitor(this, data) as IReturnType;
}
bool tmp;
- List methodList = methods.ConvertAll(delegate (IMethod m) { return m; });
+ List methodList = methods.ConvertAll(delegate (IMethod m) { return m; });
return (IMethod)methods[FindOverload(methodList, types, true, out tmp)];
}
@@ -125,7 +125,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
/// 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.
- public static int FindOverload(List methods, IReturnType[] types, bool forceParameterCount, out bool singleBestOverload)
+ public static int FindOverload(List methods, IReturnType[] types, bool forceParameterCount, out bool singleBestOverload)
{
singleBestOverload = true;
if (methods.Count == 0)
@@ -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
/// 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)
///
- 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
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 indexers = type.GetIndexers();
+ List 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
parameters[i] = (IReturnType)expr.AcceptVisitor(this, data);
}
bool tmp;
- int num = FindOverload(new List(indexers.ToArray()), parameters, true, out tmp);
+ int num = FindOverload(new List(indexers.ToArray()), parameters, true, out tmp);
if (num < 0)
return null;
else
@@ -586,10 +591,6 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
public override List GetEvents() {
return new List();
}
-
- public override List GetIndexers() {
- return new List();
- }
}
static IReturnType CreateReturnType(Type type)
diff --git a/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionClass.cs b/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionClass.cs
index f9d6581922..104919ba5c 100644
--- a/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionClass.cs
+++ b/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionClass.cs
@@ -56,42 +56,15 @@ namespace ICSharpCode.SharpDevelop.Dom
get {
List properties = new List();
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);
- }
+ ReflectionProperty prop = new ReflectionProperty(propertyInfo, this);
+ if (prop.IsPublic || prop.IsProtected)
+ properties.Add(prop);
}
return properties;
}
}
- public override List Indexer {
- get {
- List indexer = new List();
- 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 Methods {
get {
List methods = new List();
@@ -154,9 +127,6 @@ namespace ICSharpCode.SharpDevelop.Dom
public override List GetEvents() {
return new List(1);
}
- public override List GetIndexers() {
- return new List(1);
- }
}
#endregion
diff --git a/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionField.cs b/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionField.cs
index f92647bc83..74168f5973 100644
--- a/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionField.cs
+++ b/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionField.cs
@@ -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) {
diff --git a/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionIndexer.cs b/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionIndexer.cs
deleted file mode 100644
index 3293b5700a..0000000000
--- a/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionIndexer.cs
+++ /dev/null
@@ -1,98 +0,0 @@
-//
-// 2002-2005 AlphaSierraPapa
-// GNU General Public License
-//
-// $Revision$
-//
-
-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 Parameters {
- get {
- List parameters = new List();
- 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;
- }
- }
-}
diff --git a/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionMethod.cs b/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionMethod.cs
index 1a6b1cfb5f..99a9458002 100644
--- a/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionMethod.cs
+++ b/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionMethod.cs
@@ -19,13 +19,12 @@ namespace ICSharpCode.SharpDevelop.Dom
{
MethodBase methodBase;
-
public override bool IsConstructor {
get {
return methodBase is ConstructorInfo;
}
}
-
+
public override IReturnType ReturnType {
get {
if (methodBase is MethodInfo) {
@@ -36,18 +35,24 @@ namespace ICSharpCode.SharpDevelop.Dom
return null;
}
set {
+ throw new NotSupportedException();
}
}
+ List parameters;
+
public override List Parameters {
get {
- List parameters = new List();
- foreach (ParameterInfo paramInfo in methodBase.GetParameters()) {
- parameters.Add(new ReflectionParameter(paramInfo, this));
+ if (parameters == null) {
+ parameters = new List();
+ foreach (ParameterInfo paramInfo in methodBase.GetParameters()) {
+ parameters.Add(new ReflectionParameter(paramInfo, this));
+ }
}
return parameters;
}
set {
+ throw new NotSupportedException();
}
}
diff --git a/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionParameter.cs b/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionParameter.cs
index 6577c1b46e..5e97dbfd7a 100644
--- a/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionParameter.cs
+++ b/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionParameter.cs
@@ -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;
diff --git a/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionProperty.cs b/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionProperty.cs
index 6928637fb7..644b656a7a 100644
--- a/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionProperty.cs
+++ b/src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionProperty.cs
@@ -13,7 +13,7 @@ using System.Xml;
namespace ICSharpCode.SharpDevelop.Dom
{
[Serializable]
- public class ReflectionProperty : DefaultProperty
+ public class ReflectionProperty : DefaultProperty
{
PropertyInfo propertyInfo;
@@ -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);
diff --git a/src/Main/Base/Project/Src/Services/AmbienceService/AbstractAmbience.cs b/src/Main/Base/Project/Src/Services/AmbienceService/AbstractAmbience.cs
index abee8047f5..6a3c72dc43 100644
--- a/src/Main/Base/Project/Src/Services/AmbienceService/AbstractAmbience.cs
+++ b/src/Main/Base/Project/Src/Services/AmbienceService/AbstractAmbience.cs
@@ -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);
diff --git a/src/Main/Base/Project/Src/Services/AmbienceService/AmbienceReflectionDecorator.cs b/src/Main/Base/Project/Src/Services/AmbienceService/AmbienceReflectionDecorator.cs
index 78534c89bc..73dba166ab 100644
--- a/src/Main/Base/Project/Src/Services/AmbienceService/AmbienceReflectionDecorator.cs
+++ b/src/Main/Base/Project/Src/Services/AmbienceService/AmbienceReflectionDecorator.cs
@@ -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);
diff --git a/src/Main/Base/Project/Src/Services/AmbienceService/IAmbience.cs b/src/Main/Base/Project/Src/Services/AmbienceService/IAmbience.cs
index 5de208b5e6..db4a7e1e46 100644
--- a/src/Main/Base/Project/Src/Services/AmbienceService/IAmbience.cs
+++ b/src/Main/Base/Project/Src/Services/AmbienceService/IAmbience.cs
@@ -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);
diff --git a/src/Main/Base/Project/Src/Services/AmbienceService/NetAmbience.cs b/src/Main/Base/Project/Src/Services/AmbienceService/NetAmbience.cs
index a0cfac286f..e64bcc4a94 100644
--- a/src/Main/Base/Project/Src/Services/AmbienceService/NetAmbience.cs
+++ b/src/Main/Base/Project/Src/Services/AmbienceService/NetAmbience.cs
@@ -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
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();
diff --git a/src/Main/Base/Project/Src/Services/ClassBrowserIcons/ClassBrowserIconService.cs b/src/Main/Base/Project/Src/Services/ClassBrowserIcons/ClassBrowserIconService.cs
index c3bcaa06cb..589efe6cb5 100644
--- a/src/Main/Base/Project/Src/Services/ClassBrowserIcons/ClassBrowserIconService.cs
+++ b/src/Main/Base/Project/Src/Services/ClassBrowserIcons/ClassBrowserIconService.cs
@@ -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
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)
diff --git a/src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs b/src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs
index 4a7e285e3a..7b3b71190b 100644
--- a/src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs
+++ b/src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs
@@ -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) {
diff --git a/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringService.cs b/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringService.cs
index 0667e344d7..dcda11c3b3 100644
--- a/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringService.cs
+++ b/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringService.cs
@@ -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
}
} 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) {
diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/InsightWindow/IndexerInsightDataProvider.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/InsightWindow/IndexerInsightDataProvider.cs
index 13e1c40f3d..b209a539fa 100644
--- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/InsightWindow/IndexerInsightDataProvider.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/InsightWindow/IndexerInsightDataProvider.cs
@@ -43,8 +43,10 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
IReturnType type = result.ResolvedType;
if (type == null)
return;
- foreach (IIndexer i in type.GetIndexers()) {
- methods.Add(i);
+ foreach (IProperty i in type.GetProperties()) {
+ if (i.IsIndexer) {
+ methods.Add(i);
+ }
}
}
diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/InsightWindow/MethodInsightDataProvider.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/InsightWindow/MethodInsightDataProvider.cs
index b2770476b3..5ea1eef2e1 100644
--- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/InsightWindow/MethodInsightDataProvider.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/InsightWindow/MethodInsightDataProvider.cs
@@ -25,9 +25,9 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
string fileName = null;
IDocument document = null;
TextArea textArea = null;
- protected List methods = new List();
+ protected List methods = new List();
- public List Methods {
+ public List Methods {
get {
return methods;
}
@@ -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();
}
diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/ParserFoldingStrategy.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/ParserFoldingStrategy.cs
index e482b6c5ea..27693f31f0 100644
--- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/ParserFoldingStrategy.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/ParserFoldingStrategy.cs
@@ -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,
diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs
index 15eeb29481..85531e4559 100644
--- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/QuickClassBrowserPanel.cs
@@ -1,4 +1,4 @@
-//
+//
// 2002-2005 AlphaSierraPapa
// GNU General Public License
//
@@ -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
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
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));
}