From 059bc6db0ce16bad2f763d219110baa19937af91 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Thu, 25 Aug 2005 17:29:22 +0000 Subject: [PATCH] Removed IIndexer from ICSharpCode.Dom (replaced by IProperty.IsIndexer) git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@440 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Src/CSharpAmbience.cs | 85 +++------------- .../Project/Src/CSharpCompletionBinding.cs | 6 +- .../CSharpFormattingStrategy.cs | 7 +- .../VBNetBinding/Project/Src/VBNetAmbience.cs | 57 ++--------- .../Project/Src/VBNetCompletionBinding.cs | 12 ++- .../XmlEditor/Project/XmlEditor.csproj | 2 +- .../Project/ICSharpCode.SharpDevelop.csproj | 3 - src/Main/Base/Project/Src/Dom/IClass.cs | 4 - src/Main/Base/Project/Src/Dom/IIndexer.cs | 23 ----- src/Main/Base/Project/Src/Dom/IMethod.cs | 4 +- src/Main/Base/Project/Src/Dom/IProperty.cs | 14 +-- src/Main/Base/Project/Src/Dom/IReturnType.cs | 5 - .../Dom/Implementations/AbstractReturnType.cs | 1 - .../Dom/Implementations/ArrayReturnType.cs | 24 +++-- .../Dom/Implementations/CombinedReturnType.cs | 7 +- .../Src/Dom/Implementations/CompoundClass.cs | 12 +-- .../Src/Dom/Implementations/DefaultClass.cs | 15 --- .../Src/Dom/Implementations/DefaultIndexer.cs | 98 ------------------- .../Dom/Implementations/DefaultProperty.cs | 11 +++ .../Dom/Implementations/DefaultReturnType.cs | 9 +- .../Dom/Implementations/ProxyReturnType.cs | 8 +- .../Dom/Implementations/SpecificReturnType.cs | 17 +--- .../Project/Src/Dom/LanguageProperties.cs | 8 +- .../NRefactoryASTConvertVisitor.cs | 8 +- .../NRefactoryResolver/NRefactoryResolver.cs | 16 +-- .../Src/Dom/NRefactoryResolver/TypeVisitor.cs | 27 ++--- .../Dom/ReflectionLayer/ReflectionClass.cs | 36 +------ .../Dom/ReflectionLayer/ReflectionField.cs | 11 +-- .../Dom/ReflectionLayer/ReflectionIndexer.cs | 98 ------------------- .../Dom/ReflectionLayer/ReflectionMethod.cs | 15 ++- .../ReflectionLayer/ReflectionParameter.cs | 14 +-- .../Dom/ReflectionLayer/ReflectionProperty.cs | 17 +++- .../AmbienceService/AbstractAmbience.cs | 1 - .../AmbienceReflectionDecorator.cs | 5 - .../Src/Services/AmbienceService/IAmbience.cs | 1 - .../Services/AmbienceService/NetAmbience.cs | 31 +----- .../ClassBrowserIconService.cs | 14 +-- .../Src/Services/Debugger/DebuggerService.cs | 4 +- .../RefactoringService/RefactoringService.cs | 4 +- .../IndexerInsightDataProvider.cs | 6 +- .../MethodInsightDataProvider.cs | 8 +- .../Gui/Editor/ParserFoldingStrategy.cs | 7 -- .../Gui/Editor/QuickClassBrowserPanel.cs | 21 +--- 43 files changed, 163 insertions(+), 613 deletions(-) delete mode 100644 src/Main/Base/Project/Src/Dom/IIndexer.cs delete mode 100644 src/Main/Base/Project/Src/Dom/Implementations/DefaultIndexer.cs delete mode 100644 src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionIndexer.cs 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)); }