Browse Source

SharpDevelop.Dom: in CtrlSpace+GetCompletionData methods: replace ArrayList with List<ICompletionEntry>

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@4750 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 17 years ago
parent
commit
bba9b753ba
  1. 12
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooResolver.cs
  2. 2
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ExpressionFinder.cs
  3. 8
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs
  4. 5
      src/AddIns/BackendBindings/Boo/BooBinding/Test/ResolverTests.cs
  5. 2
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpCompletionBinding.cs
  6. 3
      src/AddIns/BackendBindings/Python/PythonBinding/Project/PythonBinding.csproj
  7. 5
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonCodeCompletionBinding.cs
  8. 11
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonResolver.cs
  9. 6
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/NamespaceContentsAddedToCtrlSpaceTestFixture.cs
  10. 12
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/ResolveImportsTestFixture.cs
  11. 10
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Utils/MockProjectContent.cs
  12. 4
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCompilationUnit.cs
  13. 2
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlContext.cs
  14. 2
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlExpressionContext.cs
  15. 4
      src/AddIns/Misc/UnitTesting/Test/Utils/MockProjectContent.cs
  16. 18
      src/Main/Base/Project/Src/Editor/CodeCompletion/CodeCompletionItemProvider.cs
  17. 7
      src/Main/Base/Project/Src/Editor/CodeCompletion/CtrlSpaceCompletionItemProvider.cs
  18. 4
      src/Main/Base/Project/Src/Editor/CodeCompletion/MethodInsightProvider.cs
  19. 4
      src/Main/Base/Project/Src/TextEditor/Gui/Dialogs/GotoDialog.cs
  20. 4
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/AbstractCompletionDataProvider.cs
  21. 4
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/InsightWindow/MethodInsightDataProvider.cs
  22. 15
      src/Main/Base/Test/InnerClassesResolverTests.cs
  23. 48
      src/Main/Base/Test/NRefactoryResolverTests.cs
  24. 1
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/ICSharpCode.SharpDevelop.Dom.csproj
  25. 55
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CtrlSpaceResolveHelper.cs
  26. 32
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ExpressionContext.cs
  27. 22
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Interfaces/ICompletionEntry.cs
  28. 6
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Interfaces/IEntity.cs
  29. 99
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryResolver.cs
  30. 13
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/DefaultProjectContent.cs
  31. 35
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/IProjectContent.cs
  32. 46
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ResolveResult.cs

12
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/BooResolver.cs

@ -293,9 +293,9 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -293,9 +293,9 @@ namespace Grunwald.BooBinding.CodeCompletion
return c2;
}
public ArrayList CtrlSpace(int caretLine, int caretColumn, ParseInformation parseInfo, string fileContent, ExpressionContext context)
public List<ICompletionEntry> CtrlSpace(int caretLine, int caretColumn, ParseInformation parseInfo, string fileContent, ExpressionContext context)
{
ArrayList result = new ArrayList();
List<ICompletionEntry> result = new List<ICompletionEntry>();
if (!Initialize(parseInfo, caretLine, caretColumn))
return null;
@ -343,14 +343,14 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -343,14 +343,14 @@ namespace Grunwald.BooBinding.CodeCompletion
}
// used by ctrl+space and resolve visitor (resolve identifier)
public ArrayList GetImportedNamespaceContents()
public List<ICompletionEntry> GetImportedNamespaceContents()
{
ArrayList result = new ArrayList();
List<ICompletionEntry> result = new List<ICompletionEntry>();
AddImportedNamespaceContents(result);
return result;
}
void AddImportedNamespaceContents(ArrayList list)
void AddImportedNamespaceContents(List<ICompletionEntry> list)
{
IClass c;
foreach (KeyValuePair<string, string> pair in BooAmbience.ReverseTypeConversionTable) {
@ -407,7 +407,7 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -407,7 +407,7 @@ namespace Grunwald.BooBinding.CodeCompletion
public BooCtrlSpaceCompletionItemProvider() {}
public BooCtrlSpaceCompletionItemProvider(ExpressionContext overrideContext) : base(overrideContext) {}
protected override ArrayList CtrlSpace(ITextEditor editor, ExpressionContext context)
protected override List<ICompletionEntry> CtrlSpace(ITextEditor editor, ExpressionContext context)
{
return new BooResolver().CtrlSpace(
editor.Caret.Line,

2
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ExpressionFinder.cs

@ -213,7 +213,7 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -213,7 +213,7 @@ namespace Grunwald.BooBinding.CodeCompletion
{
public static BooAttributeContext Instance = new BooAttributeContext();
public override bool ShowEntry(object o)
public override bool ShowEntry(ICompletionEntry o)
{
IClass c = o as IClass;
if (c != null && c.IsAbstract)

8
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/CodeCompletion/ResolveVisitor.cs

@ -365,8 +365,8 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -365,8 +365,8 @@ namespace Grunwald.BooBinding.CodeCompletion
}
}
if (callingClass != null) {
ArrayList list = new ArrayList();
ResolveResult.AddExtensions(callingClass.ProjectContent.Language, list, callingClass, type);
List<IMethodOrProperty> list = new List<IMethodOrProperty>();
ResolveResult.AddExtensions(callingClass.ProjectContent.Language, list.Add, callingClass, type);
foreach (IMethodOrProperty mp in list) {
if (IsSameName(mp.Name, memberName)) {
if (mp is IMethod)
@ -487,8 +487,8 @@ namespace Grunwald.BooBinding.CodeCompletion @@ -487,8 +487,8 @@ namespace Grunwald.BooBinding.CodeCompletion
}
}
if (methods.Count == 0) {
ArrayList list = new ArrayList();
ResolveResult.AddExtensions(callingClass.ProjectContent.Language, list, callingClass, containingType);
List<IMethodOrProperty> list = new List<IMethodOrProperty>();
ResolveResult.AddExtensions(callingClass.ProjectContent.Language, list.Add, callingClass, containingType);
foreach (IMethodOrProperty mp in list) {
if (IsSameName(mp.Name, methodName) && mp is IMethod) {
IMethod m = (IMethod)mp.CreateSpecializedMember();

5
src/AddIns/BackendBindings/Boo/BooBinding/Test/ResolverTests.cs

@ -227,7 +227,7 @@ namespace Grunwald.BooBinding.Tests @@ -227,7 +227,7 @@ namespace Grunwald.BooBinding.Tests
public void MyMethodCompletion()
{
MethodGroupResolveResult rr = Resolve<MethodGroupResolveResult>(regressionProg, "MyMethod", "/*1*/");
ArrayList arr = rr.GetCompletionData(lastPC);
var arr = rr.GetCompletionData(lastPC);
Assert.IsNotNull(arr);
bool beginInvoke = false;
bool invoke = false;
@ -379,8 +379,7 @@ namespace Grunwald.BooBinding.Tests @@ -379,8 +379,7 @@ namespace Grunwald.BooBinding.Tests
int line, column;
GetPos(prog, "/*mark*/", out line, out column);
BooResolver r = new BooResolver();
System.Collections.ArrayList ar;
ar = r.CtrlSpace(line, column, ParserService.GetParseInformation(fileName), prog, ExpressionContext.Default);
var ar = r.CtrlSpace(line, column, ParserService.GetParseInformation(fileName), prog, ExpressionContext.Default);
foreach (string e in unExpected) {
foreach (object o in ar) {
if (e.Equals(o))

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

@ -288,7 +288,7 @@ namespace CSharpBinding @@ -288,7 +288,7 @@ namespace CSharpBinding
this.FullyQualifiedName = c.FullyQualifiedName;
}
string IEntity.Name {
string ICompletionEntry.Name {
get { return newName; }
}
}

3
src/AddIns/BackendBindings/Python/PythonBinding/Project/PythonBinding.csproj

@ -53,6 +53,9 @@ @@ -53,6 +53,9 @@
<HintPath>..\..\RequiredLibraries\Microsoft.Scripting.Core.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Design" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />

5
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonCodeCompletionBinding.cs

@ -5,11 +5,12 @@ @@ -5,11 +5,12 @@
// <version>$Revision$</version>
// </file>
using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
using System;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
using System.Collections.Generic;
namespace ICSharpCode.PythonBinding
{
@ -70,7 +71,7 @@ namespace ICSharpCode.PythonBinding @@ -70,7 +71,7 @@ namespace ICSharpCode.PythonBinding
{
}
protected override System.Collections.ArrayList CtrlSpace(ICSharpCode.SharpDevelop.Editor.ITextEditor editor, ExpressionContext context)
protected override List<ICompletionEntry> CtrlSpace(ICSharpCode.SharpDevelop.Editor.ITextEditor editor, ExpressionContext context)
{
return new PythonResolver().CtrlSpace(
editor.Caret.Line,

11
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonResolver.cs

@ -8,6 +8,7 @@ @@ -8,6 +8,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
@ -69,9 +70,9 @@ namespace ICSharpCode.PythonBinding @@ -69,9 +70,9 @@ namespace ICSharpCode.PythonBinding
/// <summary>
/// Called when Ctrl+Space is entered by the user.
/// </summary>
public ArrayList CtrlSpace(int caretLine, int caretColumn, ParseInformation parseInfo, string fileContent, ExpressionContext context)
public List<ICompletionEntry> CtrlSpace(int caretLine, int caretColumn, ParseInformation parseInfo, string fileContent, ExpressionContext context)
{
ArrayList results = new ArrayList();
List<ICompletionEntry> results = new List<ICompletionEntry>();
ICompilationUnit compilationUnit = GetCompilationUnit(parseInfo, true);
if (compilationUnit != null && compilationUnit.ProjectContent != null) {
if (context == ExpressionContext.Importable) {
@ -79,7 +80,7 @@ namespace ICSharpCode.PythonBinding @@ -79,7 +80,7 @@ namespace ICSharpCode.PythonBinding
compilationUnit.ProjectContent.AddNamespaceContents(results, String.Empty, compilationUnit.ProjectContent.Language, true);
// Add built-in module names.
results.AddRange(GetStandardPythonModuleNames());
results.AddRange(GetStandardPythonModuleNames().Select(name => new NamespaceEntry(name)));
} else {
// Add namespace contents.
CtrlSpaceResolveHelper.AddImportedNamespaceContents(results, compilationUnit, null);
@ -226,9 +227,9 @@ namespace ICSharpCode.PythonBinding @@ -226,9 +227,9 @@ namespace ICSharpCode.PythonBinding
/// Returns an array of the types that are imported by the
/// current compilation unit.
/// </summary>
ArrayList GetImportedTypes()
List<ICompletionEntry> GetImportedTypes()
{
ArrayList types = new ArrayList();
List<ICompletionEntry> types = new List<ICompletionEntry>();
CtrlSpaceResolveHelper.AddImportedNamespaceContents(types, this.compilationUnit, this.callingClass);
return types;
}

6
src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/NamespaceContentsAddedToCtrlSpaceTestFixture.cs

@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
// </file>
using System;
using System.Collections;
using System.Collections.Generic;
using ICSharpCode.PythonBinding;
using ICSharpCode.SharpDevelop.Dom;
using NUnit.Framework;
@ -23,7 +23,7 @@ namespace PythonBinding.Tests.Resolver @@ -23,7 +23,7 @@ namespace PythonBinding.Tests.Resolver
[TestFixture]
public class NamespaceContentsAddedToCtrlSpaceTestFixture
{
ArrayList results;
List<ICompletionEntry> results;
PythonResolver resolver;
MockProjectContent mockProjectContent;
MockClass myTestClass;
@ -70,7 +70,7 @@ namespace PythonBinding.Tests.Resolver @@ -70,7 +70,7 @@ namespace PythonBinding.Tests.Resolver
[Test]
public void TestNamespaceReturnedInResults()
{
Assert.Contains("Test", results);
Assert.Contains(new NamespaceEntry("Test"), results);
}
}
}

12
src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/ResolveImportsTestFixture.cs

@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
// </file>
using System;
using System.Collections;
using System.Collections.Generic;
using ICSharpCode.PythonBinding;
using ICSharpCode.SharpDevelop.Dom;
using NUnit.Framework;
@ -22,7 +22,7 @@ namespace PythonBinding.Tests.Resolver @@ -22,7 +22,7 @@ namespace PythonBinding.Tests.Resolver
[TestFixture]
public class ResolveImportsTestFixture
{
ArrayList results;
List<ICompletionEntry> results;
PythonResolver resolver;
MockProjectContent mockProjectContent;
@ -65,7 +65,7 @@ namespace PythonBinding.Tests.Resolver @@ -65,7 +65,7 @@ namespace PythonBinding.Tests.Resolver
[Test]
public void TestNamespaceAdded()
{
Assert.Contains("Test", results);
Assert.Contains(new NamespaceEntry("Test"), results);
}
/// <summary>
@ -75,14 +75,14 @@ namespace PythonBinding.Tests.Resolver @@ -75,14 +75,14 @@ namespace PythonBinding.Tests.Resolver
public void NullParseInfo()
{
PythonResolver resolver = new PythonResolver();
ArrayList results = resolver.CtrlSpace(0, 0, null, "abc", ExpressionContext.Importable);
List<ICompletionEntry> results = resolver.CtrlSpace(0, 0, null, "abc", ExpressionContext.Importable);
Assert.AreEqual(0, results.Count);
}
[Test]
public void ContainsSysModule()
{
Assert.Contains("sys", results);
Assert.Contains(new NamespaceEntry("sys"), results);
}
}
}

10
src/AddIns/BackendBindings/Python/PythonBinding/Test/Utils/MockProjectContent.cs

@ -31,7 +31,7 @@ namespace PythonBinding.Tests.Utils @@ -31,7 +31,7 @@ namespace PythonBinding.Tests.Utils
bool getClassCalled;
string getClassName;
List<IClass> classesInProjectContent = new List<IClass>();
ArrayList namespaceContents = new ArrayList();
List<ICompletionEntry> namespaceContents = new List<ICompletionEntry>();
string namespaceContentsSearched = String.Empty;
string classNameForGetClass;
bool namespaceExistsReturnValue;
@ -152,7 +152,7 @@ namespace PythonBinding.Tests.Utils @@ -152,7 +152,7 @@ namespace PythonBinding.Tests.Utils
/// Gets the namespace contents to return from the
/// GetNamespaceContents method.
/// </summary>
public ArrayList NamespaceContentsToReturn {
public List<ICompletionEntry> NamespaceContentsToReturn {
get { return namespaceContents; }
}
@ -265,7 +265,7 @@ namespace PythonBinding.Tests.Utils @@ -265,7 +265,7 @@ namespace PythonBinding.Tests.Utils
return namespaceExistsReturnValue;
}
public ArrayList GetNamespaceContents(string nameSpace)
public List<ICompletionEntry> GetNamespaceContents(string nameSpace)
{
namespaceContentsSearched = nameSpace;
return namespaceContents;
@ -281,7 +281,7 @@ namespace PythonBinding.Tests.Utils @@ -281,7 +281,7 @@ namespace PythonBinding.Tests.Utils
throw new NotImplementedException();
}
public void AddNamespaceContents(ArrayList list, string subNameSpace, LanguageProperties language, bool lookInReferences)
public void AddNamespaceContents(List<ICompletionEntry> list, string subNameSpace, LanguageProperties language, bool lookInReferences)
{
addNamespaceContentsCalled = true;
namespaceAddedName = subNameSpace;
@ -290,7 +290,7 @@ namespace PythonBinding.Tests.Utils @@ -290,7 +290,7 @@ namespace PythonBinding.Tests.Utils
// Add the namespaces to the list.
foreach (string ns in namespacesToAdd) {
list.Add(ns);
list.Add(new NamespaceEntry(ns));
}
// Add the classes in this project content.

4
src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCompilationUnit.cs

@ -119,7 +119,7 @@ namespace ICSharpCode.XamlBinding @@ -119,7 +119,7 @@ namespace ICSharpCode.XamlBinding
if (xmlNamespace.StartsWith("clr-namespace:", StringComparison.OrdinalIgnoreCase))
return pc.GetNamespaceContents(GetNamespaceNameFromClrNamespace(xmlNamespace)).OfType<IClass>();
else {
var list = new ArrayList();
var list = new List<ICompletionEntry>();
AddNamespaceMembersInAssembly(pc, xmlNamespace, list);
foreach (IProjectContent p in pc.ReferencedContents) {
AddNamespaceMembersInAssembly(p, xmlNamespace, list);
@ -131,7 +131,7 @@ namespace ICSharpCode.XamlBinding @@ -131,7 +131,7 @@ namespace ICSharpCode.XamlBinding
return Enumerable.Empty<IClass>();
}
static void AddNamespaceMembersInAssembly(IProjectContent projectContent, string xmlNamespace, ArrayList list)
static void AddNamespaceMembersInAssembly(IProjectContent projectContent, string xmlNamespace, List<ICompletionEntry> list)
{
foreach (IAttribute att in projectContent.GetAssemblyAttributes()) {
if (att.PositionalArguments.Count == 2

2
src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlContext.cs

@ -134,7 +134,7 @@ namespace ICSharpCode.XamlBinding @@ -134,7 +134,7 @@ namespace ICSharpCode.XamlBinding
Description == XamlContextDescription.InCData; }
}
public override bool ShowEntry(object o)
public override bool ShowEntry(ICompletionEntry o)
{
return true;
}

2
src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlExpressionContext.cs

@ -32,7 +32,7 @@ namespace ICSharpCode.XamlBinding @@ -32,7 +32,7 @@ namespace ICSharpCode.XamlBinding
this.InAttributeValue = inAttributeValue;
}
public override bool ShowEntry(object o)
public override bool ShowEntry(ICompletionEntry o)
{
return true;
}

4
src/AddIns/Misc/UnitTesting/Test/Utils/MockProjectContent.cs

@ -113,7 +113,7 @@ namespace UnitTesting.Tests.Utils @@ -113,7 +113,7 @@ namespace UnitTesting.Tests.Utils
throw new NotImplementedException();
}
public ArrayList GetNamespaceContents(string nameSpace)
public List<ICompletionEntry> GetNamespaceContents(string nameSpace)
{
throw new NotImplementedException();
}
@ -128,7 +128,7 @@ namespace UnitTesting.Tests.Utils @@ -128,7 +128,7 @@ namespace UnitTesting.Tests.Utils
throw new NotImplementedException();
}
public void AddNamespaceContents(System.Collections.ArrayList list, string subNameSpace, LanguageProperties language, bool lookInReferences)
public void AddNamespaceContents(List<ICompletionEntry> list, string subNameSpace, LanguageProperties language, bool lookInReferences)
{
throw new NotImplementedException();
}

18
src/Main/Base/Project/Src/Editor/CodeCompletion/CodeCompletionItemProvider.cs

@ -98,7 +98,7 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion @@ -98,7 +98,7 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion
if (rr == null)
return null;
IProjectContent callingContent = rr.CallingClass != null ? rr.CallingClass.ProjectContent : null;
ArrayList arr = rr.GetCompletionData(callingContent ?? ParserService.CurrentProjectContent);
List<ICompletionEntry> arr = rr.GetCompletionData(callingContent ?? ParserService.CurrentProjectContent);
return GenerateCompletionListForCompletionData(arr, context);
}
@ -112,14 +112,14 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion @@ -112,14 +112,14 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion
list.SortItems();
}
public virtual ICompletionItemList GenerateCompletionListForCompletionData(ArrayList arr, ExpressionContext context)
public virtual ICompletionItemList GenerateCompletionListForCompletionData(List<ICompletionEntry> arr, ExpressionContext context)
{
if (arr == null)
return null;
DefaultCompletionItemList result = CreateCompletionItemList();
Dictionary<string, CodeCompletionItem> methodItems = new Dictionary<string, CodeCompletionItem>();
foreach (object o in arr) {
foreach (ICompletionEntry o in arr) {
if (context != null && !context.ShowEntry(o))
continue;
@ -159,10 +159,16 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion @@ -159,10 +159,16 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion
public virtual ICompletionItem CreateCompletionItem(object o, ExpressionContext context)
{
IEntity entity = o as IEntity;
if (entity != null)
if (entity != null) {
return new CodeCompletionItem(entity);
else
return new DefaultCompletionItem(o.ToString());
} else {
DefaultCompletionItem item = new DefaultCompletionItem(o.ToString());
if (o is NamespaceEntry)
item.Image = ClassBrowserIconService.Namespace;
else if (o is Dom.NRefactoryResolver.KeywordEntry)
item.Image = ClassBrowserIconService.Keyword;
return item;
}
}
}

7
src/Main/Base/Project/Src/Editor/CodeCompletion/CtrlSpaceCompletionItemProvider.cs

@ -9,6 +9,7 @@ using System; @@ -9,6 +9,7 @@ using System;
using System.Collections;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Dom;
using System.Collections.Generic;
namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion
{
@ -102,12 +103,12 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion @@ -102,12 +103,12 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion
return GenerateCompletionListForExpression(editor, expressionResult);
} else {
preselectionLength = expression.Length;
ArrayList results = CtrlSpace(editor, expressionResult.Context);
List<ICompletionEntry> results = CtrlSpace(editor, expressionResult.Context);
return GenerateCompletionListForCompletionData(results, expressionResult.Context);
}
}
protected abstract ArrayList CtrlSpace(ITextEditor editor, ExpressionContext context);
protected abstract List<ICompletionEntry> CtrlSpace(ITextEditor editor, ExpressionContext context);
protected override void InitializeCompletionItemList(DefaultCompletionItemList list)
{
@ -135,7 +136,7 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion @@ -135,7 +136,7 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion
this.language = language;
}
protected override ArrayList CtrlSpace(ITextEditor editor, ExpressionContext context)
protected override List<ICompletionEntry> CtrlSpace(ITextEditor editor, ExpressionContext context)
{
var resolver = new Dom.NRefactoryResolver.NRefactoryResolver(language);
return resolver.CtrlSpace(

4
src/Main/Base/Project/Src/Editor/CodeCompletion/MethodInsightProvider.cs

@ -114,8 +114,8 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion @@ -114,8 +114,8 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion
}
}
if (methods.Count == 0 && result.CallingClass != null && language.SupportsExtensionMethods) {
ArrayList list = new ArrayList();
ResolveResult.AddExtensions(language, list, result.CallingClass, mgrr.ContainingType);
List<IMethodOrProperty> list = new List<IMethodOrProperty>();
ResolveResult.AddExtensions(language, list.Add, result.CallingClass, mgrr.ContainingType);
foreach (IMethodOrProperty mp in list) {
if (language.NameComparer.Equals(mp.Name, mgrr.Name) && mp is IMethod) {
DefaultMethod m = (DefaultMethod)mp.CreateSpecializedMember();

4
src/Main/Base/Project/Src/TextEditor/Gui/Dialogs/GotoDialog.cs

@ -188,7 +188,9 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -188,7 +188,9 @@ namespace ICSharpCode.SharpDevelop.Gui
}
} else {
AddSourceFiles(text, 0);
//ShowCtrlSpaceCompletion(text);
foreach (IClass c in SearchClasses(text)) {
AddItem(c, GetMatchType(text, c.Name));
}
}
newItems.Sort();
foreach (MyListBoxItem item in newItems)

4
src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/AbstractCompletionDataProvider.cs

@ -144,14 +144,14 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -144,14 +144,14 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
protected abstract void GenerateCompletionData(TextArea textArea, char charTyped);
protected void AddResolveResults(ICollection list, ExpressionContext context)
protected void AddResolveResults(ICollection<ICompletionEntry> list, ExpressionContext context)
{
if (list == null) {
return;
}
completionData.Capacity += list.Count;
CodeCompletionData suggestedData = null;
foreach (object o in list) {
foreach (ICompletionEntry o in list) {
if (context != null && !context.ShowEntry(o))
continue;
CodeCompletionData ccd = CreateItem(o, context);

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

@ -167,8 +167,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -167,8 +167,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
}
}
if (methods.Count == 0 && result.CallingClass != null && language.SupportsExtensionMethods) {
ArrayList list = new ArrayList();
ResolveResult.AddExtensions(language, list, result.CallingClass, result.ContainingType);
List<IMethodOrProperty> list = new List<IMethodOrProperty>();
ResolveResult.AddExtensions(language, list.Add, result.CallingClass, result.ContainingType);
foreach (IMethodOrProperty mp in list) {
if (language.NameComparer.Equals(mp.Name, result.Name) && mp is IMethod) {
DefaultMethod m = (DefaultMethod)mp.CreateSpecializedMember();

15
src/Main/Base/Test/InnerClassesResolverTests.cs

@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using ICSharpCode.SharpDevelop.Dom;
using NUnit.Framework;
@ -33,7 +34,7 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -33,7 +34,7 @@ namespace ICSharpCode.SharpDevelop.Tests
return nrrt.ResolveVB<T>(program, expression, line);
}
ArrayList CtrlSpace(string program, int line)
List<ICompletionEntry> CtrlSpace(string program, int line)
{
return nrrt.CtrlSpaceResolveCSharp(program, line, ExpressionContext.Default);
}
@ -199,7 +200,7 @@ class A { @@ -199,7 +200,7 @@ class A {
ResolveResult result = Resolve(program, "a", 8);
Assert.IsNotNull(result, "result");
Assert.IsTrue(result is LocalResolveResult, "result is LocalResolveResult");
ArrayList arr = result.GetCompletionData(nrrt.lastPC);
var arr = result.GetCompletionData(nrrt.lastPC);
Assert.IsNotNull(arr, "arr");
foreach (object o in arr) {
if (o is IField) {
@ -341,7 +342,7 @@ class C { @@ -341,7 +342,7 @@ class C {
class Outer { private class Inner { } }
";
TypeResolveResult trr = Resolve<TypeResolveResult>(program, "Outer", 3);
ArrayList l = trr.GetCompletionData(trr.ResolvedClass.ProjectContent);
var l = trr.GetCompletionData(trr.ResolvedClass.ProjectContent);
Assert.IsFalse(IsInnerClassVisible(l));
}
@ -355,7 +356,7 @@ class Derived : Outer { @@ -355,7 +356,7 @@ class Derived : Outer {
class Outer { protected class Inner {} }
";
TypeResolveResult trr = Resolve<TypeResolveResult>(program, "Outer", 3);
ArrayList l = trr.GetCompletionData(trr.ResolvedClass.ProjectContent);
var l = trr.GetCompletionData(trr.ResolvedClass.ProjectContent);
Assert.IsTrue(IsInnerClassVisible(l));
}
@ -370,7 +371,7 @@ class Derived2 : Outer { } @@ -370,7 +371,7 @@ class Derived2 : Outer { }
class Outer { protected class Inner {} }
";
TypeResolveResult trr = Resolve<TypeResolveResult>(program, "Derived2", 3);
ArrayList l = trr.GetCompletionData(trr.ResolvedClass.ProjectContent);
var l = trr.GetCompletionData(trr.ResolvedClass.ProjectContent);
Assert.IsTrue(IsInnerClassVisible(l));
}
@ -385,11 +386,11 @@ class Derived : Outer { } @@ -385,11 +386,11 @@ class Derived : Outer { }
class Outer { protected class Inner {} }
";
TypeResolveResult trr = Resolve<TypeResolveResult>(program, "Derived", 3);
ArrayList l = trr.GetCompletionData(trr.ResolvedClass.ProjectContent);
var l = trr.GetCompletionData(trr.ResolvedClass.ProjectContent);
Assert.IsFalse(IsInnerClassVisible(l));
}
bool IsInnerClassVisible(ArrayList l)
bool IsInnerClassVisible(IEnumerable l)
{
foreach (object o in l) {
IClass c = o as IClass;

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

@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@ -187,7 +188,7 @@ End Class @@ -187,7 +188,7 @@ End Class
";
LocalResolveResult result = ResolveVB<LocalResolveResult>(program, "a", 4);
Assert.IsNotNull(result, "result");
ArrayList arr = result.GetCompletionData(lastPC);
var arr = result.GetCompletionData(lastPC);
Assert.IsNotNull(arr, "arr");
foreach (object o in arr) {
if (o is IMember) {
@ -211,7 +212,7 @@ End Module @@ -211,7 +212,7 @@ End Module
";
ResolveResult result = ResolveVB<LocalResolveResult>(program, "t", 4);
ArrayList arr = result.GetCompletionData(lastPC);
var arr = result.GetCompletionData(lastPC);
Assert.IsNotNull(arr, "arr");
foreach (object o in arr) {
if (o is IMember) {
@ -241,7 +242,7 @@ interface IInterface2 { @@ -241,7 +242,7 @@ interface IInterface2 {
}
";
ResolveResult result = Resolve<LocalResolveResult>(program, "a", 4);
ArrayList arr = result.GetCompletionData(lastPC);
var arr = result.GetCompletionData(lastPC);
Assert.IsNotNull(arr, "arr");
bool m1 = false;
bool m2 = false;
@ -579,7 +580,7 @@ class A { @@ -579,7 +580,7 @@ class A {
Assert.IsNotNull(m);
Assert.AreEqual("A", result.ResolvedType.FullyQualifiedName);
ArrayList ar = result.GetCompletionData(result.CallingClass.ProjectContent);
var ar = result.GetCompletionData(result.CallingClass.ProjectContent);
Assert.IsTrue(ContainsMember(ar, "A.Method"));
}
@ -952,7 +953,7 @@ namespace Root.Child { @@ -952,7 +953,7 @@ namespace Root.Child {
Assert.AreEqual("Root.Alpha", result.ResolvedType.FullyQualifiedName);
}
public ArrayList CtrlSpaceResolveCSharp(string program, int line, ExpressionContext context)
public List<ICompletionEntry> CtrlSpaceResolveCSharp(string program, int line, ExpressionContext context)
{
ParseInformation parseInfo = AddCompilationUnit(Parse("a.cs", program), "a.cs");
@ -973,12 +974,12 @@ namespace Root.Child { @@ -973,12 +974,12 @@ namespace Root.Child {
}
}
";
ArrayList m = CtrlSpaceResolveCSharp(program, 7, ExpressionContext.Default);
var m = CtrlSpaceResolveCSharp(program, 7, ExpressionContext.Default);
Assert.IsTrue(TypeExists(m, "Beta"), "Beta must exist");
Assert.IsTrue(TypeExists(m, "Alpha"), "Alpha must exist");
}
bool TypeExists(ArrayList m, string name)
bool TypeExists(IEnumerable m, string name)
{
foreach (object o in m) {
IClass c = o as IClass;
@ -1203,7 +1204,7 @@ class B { @@ -1203,7 +1204,7 @@ class B {
";
ResolveResult result = Resolve(program, "b", 4);
Assert.IsNotNull(result);
ArrayList cd = result.GetCompletionData(lastPC);
var cd = result.GetCompletionData(lastPC);
Assert.IsFalse(MemberExists(cd, "member"), "member should not be in completion lookup");
result = Resolve(program, "b.member", 4);
Assert.IsTrue(result != null && result.IsValid, "member should be found even though it is not visible!");
@ -1224,7 +1225,7 @@ class B { @@ -1224,7 +1225,7 @@ class B {
";
ResolveResult result = Resolve(program, "a", 4);
Assert.IsNotNull(result);
ArrayList cd = result.GetCompletionData(lastPC);
var cd = result.GetCompletionData(lastPC);
Assert.IsTrue(MemberExists(cd, "member"), "member should be in completion lookup");
result = Resolve(program, "a.member", 4);
Assert.IsTrue(result != null && result.IsValid, "member should be found!");
@ -1243,7 +1244,7 @@ class B { @@ -1243,7 +1244,7 @@ class B {
protected int member;
}
";
ArrayList results = CtrlSpaceResolveCSharp(program, 4, ExpressionContext.Default);
var results = CtrlSpaceResolveCSharp(program, 4, ExpressionContext.Default);
Assert.IsTrue(MemberExists(results, "member"), "member should be in completion lookup");
ResolveResult result = Resolve(program, "member", 4);
Assert.IsTrue(result != null && result.IsValid, "member should be found!");
@ -1264,7 +1265,7 @@ class B { @@ -1264,7 +1265,7 @@ class B {
";
ResolveResult result = Resolve(program, "b", 4);
Assert.IsNotNull(result);
ArrayList cd = result.GetCompletionData(lastPC);
var cd = result.GetCompletionData(lastPC);
Assert.IsFalse(MemberExists(cd, "member"), "member should not be in completion lookup");
result = Resolve(program, "b.member", 4);
Assert.IsTrue(result != null && result.IsValid, "member should be found even though it is not visible!");
@ -1285,7 +1286,7 @@ class B { @@ -1285,7 +1286,7 @@ class B {
";
ResolveResult result = Resolve(program, "b", 4);
Assert.IsNotNull(result);
ArrayList cd = result.GetCompletionData(lastPC);
var cd = result.GetCompletionData(lastPC);
Assert.IsFalse(MemberExists(cd, "member"), "member should not be in completion lookup");
result = Resolve(program, "b.member", 4);
Assert.IsTrue(result != null && result.IsValid, "member should be found even though it is not visible!");
@ -1306,7 +1307,7 @@ class B { @@ -1306,7 +1307,7 @@ class B {
";
ResolveResult result = Resolve(program, "base", 4);
Assert.IsNotNull(result);
ArrayList cd = result.GetCompletionData(lastPC);
var cd = result.GetCompletionData(lastPC);
Assert.IsTrue(MemberExists(cd, "member"), "member should be in completion lookup");
result = Resolve(program, "base.member", 4);
Assert.IsTrue(result != null && result.IsValid, "member should be found!");
@ -1327,7 +1328,7 @@ class B { @@ -1327,7 +1328,7 @@ class B {
";
ResolveResult result = Resolve(program, "b", 4);
Assert.IsNotNull(result);
ArrayList cd = result.GetCompletionData(lastPC);
var cd = result.GetCompletionData(lastPC);
Assert.IsFalse(MemberExists(cd, "Method"), "member should not be in completion lookup");
result = Resolve(program, "b.Method()", 4);
Assert.IsTrue(result != null && result.IsValid, "method should be found even though it is invisible!");
@ -1348,7 +1349,7 @@ class B { @@ -1348,7 +1349,7 @@ class B {
";
ResolveResult result = Resolve(program, "base", 4);
Assert.IsNotNull(result);
ArrayList cd = result.GetCompletionData(lastPC);
var cd = result.GetCompletionData(lastPC);
Assert.IsTrue(MemberExists(cd, "Method"), "member should be in completion lookup");
result = Resolve(program, "base.Method()", 4);
Assert.IsTrue(result != null && result.IsValid, "method should be found!");
@ -1367,7 +1368,7 @@ class B { @@ -1367,7 +1368,7 @@ class B {
protected int Method();
}
";
ArrayList results = CtrlSpaceResolveCSharp(program, 4, ExpressionContext.Default);
var results = CtrlSpaceResolveCSharp(program, 4, ExpressionContext.Default);
Assert.IsTrue(MemberExists(results, "Method"), "method should be in completion lookup");
ResolveResult result = Resolve(program, "Method()", 4);
Assert.IsTrue(result != null && result.IsValid, "method should be found!");
@ -1387,17 +1388,16 @@ class B { @@ -1387,17 +1388,16 @@ class B {
}
class Method { }
";
ArrayList results = CtrlSpaceResolveCSharp(program, 4, ExpressionContext.Default);
var results = CtrlSpaceResolveCSharp(program, 4, ExpressionContext.Default);
Assert.IsTrue(MemberExists(results, "Method"), "method should be in completion lookup");
ResolveResult result = Resolve(program, "Method()", 4);
Assert.IsTrue(result != null && result.IsValid, "method should be found!");
}
bool MemberExists(ArrayList members, string name)
bool MemberExists(IEnumerable members, string name)
{
Assert.IsNotNull(members);
foreach (object o in members) {
IMember m = o as IMember;
foreach (IMember m in members.OfType<IMember>()) {
if (m != null && m.Name == name) return true;
}
return false;
@ -1512,7 +1512,7 @@ class A { @@ -1512,7 +1512,7 @@ class A {
ResolveResult result = Resolve(arrayListMixedTypeProgram, "ArrayList", 4);
Assert.IsTrue(result is MixedResolveResult);
// CC should offer both static and non-static results
ArrayList list = result.GetCompletionData(lastPC);
var list = result.GetCompletionData(lastPC);
bool ok = false;
foreach (object o in list) {
IMethod method = o as IMethod;
@ -1912,7 +1912,7 @@ public class MyCollectionType : System.Collections.IEnumerable @@ -1912,7 +1912,7 @@ public class MyCollectionType : System.Collections.IEnumerable
[Test]
public void ObjectInitializerCtrlSpaceCompletion()
{
ArrayList results = CtrlSpaceResolveCSharp(objectInitializerTestProgram, 5, ExpressionContext.ObjectInitializer);
var results = CtrlSpaceResolveCSharp(objectInitializerTestProgram, 5, ExpressionContext.ObjectInitializer);
Assert.AreEqual(new[] { "P1", "P2" }, (from IMember p in results orderby p.Name select p.Name).ToArray() );
results = CtrlSpaceResolveCSharp(objectInitializerTestProgram, 9, ExpressionContext.ObjectInitializer);
@ -2708,7 +2708,7 @@ class C2 : C1 { @@ -2708,7 +2708,7 @@ class C2 : C1 {
class C1 {
protected static int Field;
}";
ArrayList arr = CtrlSpaceResolveCSharp(program, 4, ExpressionContext.Default);
var arr = CtrlSpaceResolveCSharp(program, 4, ExpressionContext.Default);
Assert.IsTrue(MemberExists(arr, "Field"));
ResolveResult rr = Resolve(program, "C1", 4);
@ -2740,7 +2740,7 @@ class C : B { @@ -2740,7 +2740,7 @@ class C : B {
protected int Z;
}";
LocalResolveResult rr = Resolve<LocalResolveResult>(program, "c", 4);
ArrayList arr = rr.GetCompletionData(lastPC);
var arr = rr.GetCompletionData(lastPC);
Assert.IsFalse(MemberExists(arr, "P1"));
Assert.IsTrue(MemberExists(arr, "P2"));
Assert.IsFalse(MemberExists(arr, "P3"));

1
src/Main/ICSharpCode.SharpDevelop.Dom/Project/ICSharpCode.SharpDevelop.Dom.csproj

@ -103,6 +103,7 @@ @@ -103,6 +103,7 @@
<Compile Include="Src\Implementations\SystemTypes.cs" />
<Compile Include="Src\Implementations\UnknownReturnType.cs" />
<Compile Include="Src\Interfaces\ExplicitInterfaceImplementation.cs" />
<Compile Include="Src\Interfaces\ICompletionEntry.cs" />
<Compile Include="Src\Interfaces\IDomProgressMonitor.cs" />
<Compile Include="Src\Interfaces\IFreezable.cs" />
<Compile Include="Src\Interfaces\IUsingScope.cs" />

55
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CtrlSpaceResolveHelper.cs

@ -19,7 +19,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -19,7 +19,7 @@ namespace ICSharpCode.SharpDevelop.Dom
/// </summary>
public class CtrlSpaceResolveHelper
{
static void AddTypeParametersForCtrlSpace(ArrayList result, IEnumerable<ITypeParameter> typeParameters)
static void AddTypeParametersForCtrlSpace(List<ICompletionEntry> result, IEnumerable<ITypeParameter> typeParameters)
{
foreach (ITypeParameter p in typeParameters) {
DefaultClass c = DefaultTypeParameter.GetDummyClassForTypeParameter(p);
@ -32,7 +32,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -32,7 +32,7 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
public static void AddContentsFromCalling(ArrayList result, IClass callingClass, IMember callingMember)
public static void AddContentsFromCalling(List<ICompletionEntry> result, IClass callingClass, IMember callingMember)
{
IMethodOrProperty methodOrProperty = callingMember as IMethodOrProperty;
if (methodOrProperty != null) {
@ -51,7 +51,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -51,7 +51,7 @@ namespace ICSharpCode.SharpDevelop.Dom
if (callingClass != null) {
AddTypeParametersForCtrlSpace(result, callingClass.TypeParameters);
ArrayList members = new ArrayList();
List<ICompletionEntry> members = new List<ICompletionEntry>();
IReturnType t = callingClass.DefaultReturnType;
members.AddRange(t.GetMethods());
members.AddRange(t.GetFields());
@ -80,19 +80,22 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -80,19 +80,22 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
public static void AddImportedNamespaceContents(ArrayList result, ICompilationUnit cu, IClass callingClass)
public static void AddImportedNamespaceContents(List<ICompletionEntry> result, ICompilationUnit cu, IClass callingClass)
{
IProjectContent projectContent = cu.ProjectContent;
projectContent.AddNamespaceContents(result, "", projectContent.Language, true);
foreach (IUsing u in cu.GetAllUsings()) {
AddUsing(result, u, projectContent);
IUsingScope scope = (callingClass != null) ? callingClass.UsingScope : cu.UsingScope;
while (scope != null) {
foreach (IUsing u in scope.Usings)
AddUsing(result, u, projectContent);
scope = scope.Parent;
}
AddUsing(result, projectContent.DefaultImports, projectContent);
if (callingClass != null) {
string[] namespaceParts = callingClass.Namespace.Split('.');
for (int i = 1; i <= namespaceParts.Length; i++) {
foreach (object member in projectContent.GetNamespaceContents(string.Join(".", namespaceParts, 0, i))) {
foreach (ICompletionEntry member in projectContent.GetNamespaceContents(string.Join(".", namespaceParts, 0, i))) {
if (!result.Contains(member))
result.Add(member);
}
@ -108,7 +111,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -108,7 +111,7 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
public static void AddUsing(ArrayList result, IUsing u, IProjectContent projectContent)
public static void AddUsing(List<ICompletionEntry> result, IUsing u, IProjectContent projectContent)
{
if (u == null) {
return;
@ -140,19 +143,47 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -140,19 +143,47 @@ namespace ICSharpCode.SharpDevelop.Dom
}
projectContent.AddNamespaceContents(result, newName ?? name, projectContent.Language, true);
} else {
foreach (object o in projectContent.GetNamespaceContents(name)) {
if (!(o is string))
foreach (ICompletionEntry o in projectContent.GetNamespaceContents(name)) {
if (!(o is NamespaceEntry))
result.Add(o);
}
}
}
if (u.HasAliases) {
foreach (string alias in u.Aliases.Keys) {
result.Add(alias);
result.Add(new AliasEntry(alias));
}
}
}
public class AliasEntry : ICompletionEntry
{
public string Name { get; private set; }
public AliasEntry(string name)
{
if (name == null)
throw new ArgumentNullException("name");
this.Name = name;
}
public override int GetHashCode()
{
return Name.GetHashCode();
}
public override bool Equals(object obj)
{
AliasEntry e = obj as AliasEntry;
return e != null && e.Name == this.Name;
}
public override string ToString()
{
return Name;
}
}
public static ResolveResult GetResultFromDeclarationLine(IClass callingClass, IMethodOrProperty callingMember, int caretLine, int caretColumn, ExpressionResult expressionResult)
{
string expression = expressionResult.Expression;
@ -190,7 +221,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -190,7 +221,7 @@ namespace ICSharpCode.SharpDevelop.Dom
bool supportsExtensionMethods = language.SupportsExtensionMethods;
bool supportsExtensionProperties = language.SupportsExtensionProperties;
if (supportsExtensionMethods || supportsExtensionProperties) {
ArrayList list = new ArrayList();
List<ICompletionEntry> list = new List<ICompletionEntry>();
IMethod dummyMethod = new DefaultMethod("dummy", callingClass.ProjectContent.SystemTypes.Void,
ModifierEnum.Static, DomRegion.Empty, DomRegion.Empty, callingClass);
CtrlSpaceResolveHelper.AddContentsFromCalling(list, callingClass, dummyMethod);

32
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ExpressionContext.cs

@ -17,7 +17,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -17,7 +17,7 @@ namespace ICSharpCode.SharpDevelop.Dom
public abstract class ExpressionContext
{
#region Instance members
public abstract bool ShowEntry(object o);
public abstract bool ShowEntry(ICompletionEntry o);
protected bool readOnly = true;
object suggestedItem;
@ -191,7 +191,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -191,7 +191,7 @@ namespace ICSharpCode.SharpDevelop.Dom
this.name = name;
}
public override bool ShowEntry(object o)
public override bool ShowEntry(ICompletionEntry o)
{
return true;
}
@ -213,9 +213,9 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -213,9 +213,9 @@ namespace ICSharpCode.SharpDevelop.Dom
this.allowImportClasses = allowImportClasses;
}
public override bool ShowEntry(object o)
public override bool ShowEntry(ICompletionEntry o)
{
if (o is string)
if (!(o is IEntity))
return true;
IClass c = o as IClass;
if (allowImportClasses && c != null) {
@ -245,9 +245,9 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -245,9 +245,9 @@ namespace ICSharpCode.SharpDevelop.Dom
this.readOnly = readOnly;
}
public override bool ShowEntry(object o)
public override bool ShowEntry(ICompletionEntry o)
{
if (o is string)
if (!(o is IEntity))
return true;
IClass c = o as IClass;
if (c == null)
@ -333,7 +333,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -333,7 +333,7 @@ namespace ICSharpCode.SharpDevelop.Dom
this.b = b;
}
public override bool ShowEntry(object o)
public override bool ShowEntry(ICompletionEntry o)
{
if (opType == 0)
return a.ShowEntry(o) || b.ShowEntry(o);
@ -377,7 +377,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -377,7 +377,7 @@ namespace ICSharpCode.SharpDevelop.Dom
#region EnumBaseTypeExpressionContext
sealed class EnumBaseTypeExpressionContext : ExpressionContext
{
public override bool ShowEntry(object o)
public override bool ShowEntry(ICompletionEntry o)
{
IClass c = o as IClass;
if (c != null) {
@ -414,9 +414,9 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -414,9 +414,9 @@ namespace ICSharpCode.SharpDevelop.Dom
#region AttributeExpressionContext
sealed class AttributeExpressionContext : ExpressionContext
{
public override bool ShowEntry(object o)
public override bool ShowEntry(ICompletionEntry o)
{
if (o is string)
if (!(o is IEntity))
return true;
IClass c = o as IClass;
if (c != null && !c.IsAbstract) {
@ -440,9 +440,9 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -440,9 +440,9 @@ namespace ICSharpCode.SharpDevelop.Dom
#region InheritableTypeExpressionContext
sealed class InheritableTypeExpressionContext : ExpressionContext
{
public override bool ShowEntry(object o)
public override bool ShowEntry(ICompletionEntry o)
{
if (o is string) return true;
if (!(o is IEntity)) return true;
IClass c = o as IClass;
if (c != null) {
foreach (IClass innerClass in c.InnerClasses) {
@ -473,9 +473,9 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -473,9 +473,9 @@ namespace ICSharpCode.SharpDevelop.Dom
this.expectedType = expectedType;
}
public override bool ShowEntry(object o)
public override bool ShowEntry(ICompletionEntry o)
{
if (o is string) return true;
if (!(o is IEntity)) return true;
IClass c = o as IClass;
if (c != null) {
foreach (IClass innerClass in c.InnerClasses) {
@ -505,9 +505,9 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -505,9 +505,9 @@ namespace ICSharpCode.SharpDevelop.Dom
this.allowVoid = allowVoid;
}
public override bool ShowEntry(object o)
public override bool ShowEntry(ICompletionEntry o)
{
if (o is string) return true;
if (!(o is IEntity)) return true;
IClass c = o as IClass;
if (c != null) {
if (!allowVoid) {

22
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Interfaces/ICompletionEntry.cs

@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
// <version>$Revision$</version>
// </file>
using System;
using System.Collections.Generic;
namespace ICSharpCode.SharpDevelop.Dom
{
/// <summary>
/// Element of namespace or Dom completion list.
/// </summary>
public interface ICompletionEntry
{
string Name {
get;
}
}
}

6
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Interfaces/IEntity.cs

@ -10,16 +10,12 @@ using System.Collections.Generic; @@ -10,16 +10,12 @@ using System.Collections.Generic;
namespace ICSharpCode.SharpDevelop.Dom
{
public interface IEntity : IFreezable, IComparable
public interface IEntity : ICompletionEntry, IFreezable, IComparable
{
string FullyQualifiedName {
get;
}
string Name {
get;
}
string Namespace {
get;
}

99
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryResolver.cs

@ -611,10 +611,10 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -611,10 +611,10 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
}
if (languageProperties.ImportModules) {
ArrayList list = new ArrayList();
List<ICompletionEntry> list = new List<ICompletionEntry>();
CtrlSpaceResolveHelper.AddImportedNamespaceContents(list, cu, callingClass);
List<IMember> resultMembers = new List<IMember>();
foreach (object o in list) {
foreach (ICompletionEntry o in list) {
IClass c = o as IClass;
if (c != null && IsSameName(identifier, c.Name)) {
return new TypeResolveResult(callingClass, callingMember, c);
@ -1065,21 +1065,21 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -1065,21 +1065,21 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
return c2;
}
static void AddCSharpKeywords(ArrayList ar, BitArray keywords)
static void AddCSharpKeywords(List<ICompletionEntry> ar, BitArray keywords)
{
for (int i = 0; i < keywords.Length; i++) {
if (keywords[i]) {
ar.Add(NR.Parser.CSharp.Tokens.GetTokenString(i));
ar.Add(new KeywordEntry(NR.Parser.CSharp.Tokens.GetTokenString(i)));
}
}
}
public ArrayList CtrlSpace(int caretLine, int caretColumn, ParseInformation parseInfo, string fileContent, ExpressionContext context)
public List<ICompletionEntry> CtrlSpace(int caretLine, int caretColumn, ParseInformation parseInfo, string fileContent, ExpressionContext context)
{
if (!Initialize(parseInfo, caretLine, caretColumn))
return null;
ArrayList result = new ArrayList();
List<ICompletionEntry> result = new List<ICompletionEntry>();
if (language == NR.SupportedLanguage.VBNet) {
foreach (KeyValuePair<string, string> pair in TypeReference.PrimitiveTypesVB) {
if ("System." + pair.Key != pair.Value) {
@ -1087,8 +1087,8 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -1087,8 +1087,8 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
if (c != null) result.Add(c);
}
}
result.Add("Global");
result.Add("New");
result.Add(new KeywordEntry("Global"));
result.Add(new KeywordEntry("New"));
CtrlSpaceInternal(result, fileContent);
} else {
if (context == ExpressionContext.TypeDeclaration) {
@ -1100,29 +1100,29 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -1100,29 +1100,29 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
AddCSharpPrimitiveTypes(result);
CtrlSpaceInternal(result, fileContent);
} else if (context == ExpressionContext.MethodBody) {
result.Add("var");
result.Add(new KeywordEntry("var"));
AddCSharpKeywords(result, NR.Parser.CSharp.Tokens.StatementStart);
AddCSharpPrimitiveTypes(result);
CtrlSpaceInternal(result, fileContent);
} else if (context == ExpressionContext.Global) {
AddCSharpKeywords(result, NR.Parser.CSharp.Tokens.GlobalLevel);
} else if (context == ExpressionContext.InterfacePropertyDeclaration) {
result.Add("get");
result.Add("set");
result.Add(new KeywordEntry("get"));
result.Add(new KeywordEntry("set"));
} else if (context == ExpressionContext.BaseConstructorCall) {
result.Add("this");
result.Add("base");
result.Add(new KeywordEntry("this"));
result.Add(new KeywordEntry("base"));
} else if (context == ExpressionContext.ConstraintsStart) {
result.Add("where");
result.Add(new KeywordEntry("where"));
} else if (context == ExpressionContext.Constraints) {
result.Add("where");
result.Add("new");
result.Add("struct");
result.Add("class");
result.Add(new KeywordEntry("where"));
result.Add(new KeywordEntry("new"));
result.Add(new KeywordEntry("struct"));
result.Add(new KeywordEntry("class"));
AddCSharpPrimitiveTypes(result);
CtrlSpaceInternal(result, fileContent);
} else if (context == ExpressionContext.InheritableType) {
result.Add("where"); // the inheritance list can be followed by constraints
result.Add(new KeywordEntry("where")); // the inheritance list can be followed by constraints
AddCSharpPrimitiveTypes(result);
CtrlSpaceInternal(result, fileContent);
} else if (context == ExpressionContext.PropertyDeclaration) {
@ -1132,12 +1132,12 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -1132,12 +1132,12 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
} else if (context == ExpressionContext.FullyQualifiedType) {
cu.ProjectContent.AddNamespaceContents(result, "", languageProperties, true);
} else if (context == ExpressionContext.ParameterType || context == ExpressionContext.FirstParameterType) {
result.Add("ref");
result.Add("out");
result.Add("params");
result.Add(new KeywordEntry("ref"));
result.Add(new KeywordEntry("out"));
result.Add(new KeywordEntry("params"));
if (context == ExpressionContext.FirstParameterType && languageProperties.SupportsExtensionMethods) {
if (callingMember != null && callingMember.IsStatic) {
result.Add("this");
result.Add(new KeywordEntry("this"));
}
}
AddCSharpPrimitiveTypes(result);
@ -1152,15 +1152,15 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -1152,15 +1152,15 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
}
} else if (context == ExpressionContext.Attribute) {
CtrlSpaceInternal(result, fileContent);
result.Add("assembly");
result.Add("module");
result.Add("field");
result.Add("event");
result.Add("method");
result.Add("param");
result.Add("property");
result.Add("return");
result.Add("type");
result.Add(new KeywordEntry("assembly"));
result.Add(new KeywordEntry("module"));
result.Add(new KeywordEntry("field"));
result.Add(new KeywordEntry("event"));
result.Add(new KeywordEntry("method"));
result.Add(new KeywordEntry("param"));
result.Add(new KeywordEntry("property"));
result.Add(new KeywordEntry("return"));
result.Add(new KeywordEntry("type"));
} else if (context == ExpressionContext.Default) {
AddCSharpKeywords(result, NR.Parser.CSharp.Tokens.ExpressionStart);
AddCSharpKeywords(result, NR.Parser.CSharp.Tokens.ExpressionContent);
@ -1175,7 +1175,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -1175,7 +1175,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
return result;
}
void AddCSharpPrimitiveTypes(ArrayList result)
void AddCSharpPrimitiveTypes(List<ICompletionEntry> result)
{
foreach (KeyValuePair<string, string> pair in TypeReference.PrimitiveTypesCSharp) {
IClass c = GetPrimitiveClass(pair.Value, pair.Key);
@ -1183,7 +1183,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -1183,7 +1183,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
}
}
void CtrlSpaceInternal(ArrayList result, string fileContent)
void CtrlSpaceInternal(List<ICompletionEntry> result, string fileContent)
{
lookupTableVisitor = new LookupTableVisitor(language);
@ -1373,6 +1373,37 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -1373,6 +1373,37 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
return TypeVisitor.CreateReturnType(typeRef, this);
}
}
/// <summary>
/// Used in CtrlSpace-results to represent a keyword.
/// </summary>
public class KeywordEntry : ICompletionEntry
{
public string Name { get; private set; }
public KeywordEntry(string name)
{
if (name == null)
throw new ArgumentNullException("name");
this.Name = name;
}
public override int GetHashCode()
{
return Name.GetHashCode();
}
public override bool Equals(object obj)
{
KeywordEntry e = obj as KeywordEntry;
return e != null && e.Name == this.Name;
}
public override string ToString()
{
return Name;
}
}
}

13
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/DefaultProjectContent.cs

@ -687,9 +687,9 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -687,9 +687,9 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
public ArrayList GetNamespaceContents(string nameSpace)
public List<ICompletionEntry> GetNamespaceContents(string nameSpace)
{
ArrayList namespaceList = new ArrayList();
List<ICompletionEntry> namespaceList = new List<ICompletionEntry>();
AddNamespaceContents(namespaceList, nameSpace, language, true);
return namespaceList;
}
@ -697,7 +697,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -697,7 +697,7 @@ namespace ICSharpCode.SharpDevelop.Dom
/// <summary>
/// Adds the contents of the specified <paramref name="nameSpace"/> to the <paramref name="list"/>.
/// </summary>
public void AddNamespaceContents(ArrayList list, string nameSpace, LanguageProperties language, bool lookInReferences)
public void AddNamespaceContents(List<ICompletionEntry> list, string nameSpace, LanguageProperties language, bool lookInReferences)
{
if (nameSpace == null) {
return;
@ -727,13 +727,14 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -727,13 +727,14 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
foreach (string subns in ns.SubNamespaces) {
if (!list.Contains(subns))
list.Add(subns);
NamespaceEntry subnsEntry = new NamespaceEntry(subns);
if (!list.Contains(subnsEntry))
list.Add(subnsEntry);
}
}
}
void AddNamespaceContentsClass(ArrayList list, IClass c, LanguageProperties language, bool lookInReferences)
void AddNamespaceContentsClass(List<ICompletionEntry> list, IClass c, LanguageProperties language, bool lookInReferences)
{
if (c.IsInternal && !lookInReferences) {
// internal class and we are looking at it from another project content

35
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/IProjectContent.cs

@ -89,14 +89,14 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -89,14 +89,14 @@ namespace ICSharpCode.SharpDevelop.Dom
IClass GetClass(string typeName, int typeParameterCount);
bool NamespaceExists(string name);
ArrayList GetNamespaceContents(string nameSpace);
List<ICompletionEntry> GetNamespaceContents(string nameSpace);
IClass GetClass(string typeName, int typeParameterCount, LanguageProperties language, GetClassOptions options);
bool NamespaceExists(string name, LanguageProperties language, bool lookInReferences);
/// <summary>
/// Adds the contents of the specified <paramref name="subNameSpace"/> to the <paramref name="list"/>.
/// </summary>
void AddNamespaceContents(ArrayList list, string subNameSpace, LanguageProperties language, bool lookInReferences);
void AddNamespaceContents(List<ICompletionEntry> list, string subNameSpace, LanguageProperties language, bool lookInReferences);
SearchTypeResult SearchType(SearchTypeRequest request);
@ -250,5 +250,36 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -250,5 +250,36 @@ namespace ICSharpCode.SharpDevelop.Dom
get { return namespaceResult; }
}
}
/// <summary>
/// Used in 'GetNamespaceContents' result to represent a namespace.
/// </summary>
public class NamespaceEntry : ICompletionEntry
{
public string Name { get; private set; }
public NamespaceEntry(string name)
{
if (name == null)
throw new ArgumentNullException("name");
this.Name = name;
}
public override int GetHashCode()
{
return Name.GetHashCode();
}
public override bool Equals(object obj)
{
NamespaceEntry e = obj as NamespaceEntry;
return e != null && e.Name == this.Name;
}
public override string ToString()
{
return Name;
}
}
}

46
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ResolveResult.cs

@ -76,15 +76,15 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -76,15 +76,15 @@ namespace ICSharpCode.SharpDevelop.Dom
return this.Clone();
}
public virtual ArrayList GetCompletionData(IProjectContent projectContent)
public virtual List<ICompletionEntry> GetCompletionData(IProjectContent projectContent)
{
return GetCompletionData(projectContent.Language, false);
}
protected ArrayList GetCompletionData(LanguageProperties language, bool showStatic)
protected List<ICompletionEntry> GetCompletionData(LanguageProperties language, bool showStatic)
{
if (resolvedType == null) return null;
ArrayList res = new ArrayList();
List<ICompletionEntry> res = new List<ICompletionEntry>();
foreach (IMember m in MemberLookupHelper.GetAccessibleMembers(resolvedType, callingClass, language)) {
if (language.ShowMember(m, showStatic))
@ -92,7 +92,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -92,7 +92,7 @@ namespace ICSharpCode.SharpDevelop.Dom
}
if (!showStatic && callingClass != null) {
AddExtensions(language, res, callingClass, resolvedType);
AddExtensions(language, res.Add, callingClass, resolvedType);
}
return res;
@ -101,12 +101,12 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -101,12 +101,12 @@ namespace ICSharpCode.SharpDevelop.Dom
/// <summary>
/// Adds extension methods to <paramref name="res"/>.
/// </summary>
public static void AddExtensions(LanguageProperties language, ArrayList res, IClass callingClass, IReturnType resolvedType)
public static void AddExtensions(LanguageProperties language, Action<IMethodOrProperty> methodFound, IClass callingClass, IReturnType resolvedType)
{
if (language == null)
throw new ArgumentNullException("language");
if (res == null)
throw new ArgumentNullException("res");
if (methodFound == null)
throw new ArgumentNullException("methodFound");
if (resolvedType == null)
throw new ArgumentNullException("resolvedType");
if (callingClass == null)
@ -116,11 +116,11 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -116,11 +116,11 @@ namespace ICSharpCode.SharpDevelop.Dom
resolvedType = resolvedType.GetDirectReturnType();
foreach (IMethodOrProperty mp in CtrlSpaceResolveHelper.FindAllExtensions(language, callingClass)) {
TryAddExtension(language, res, mp, resolvedType);
TryAddExtension(language, methodFound, mp, resolvedType);
}
}
static void TryAddExtension(LanguageProperties language, ArrayList res, IMethodOrProperty ext, IReturnType resolvedType)
static void TryAddExtension(LanguageProperties language, Action<IMethodOrProperty> methodFound, IMethodOrProperty ext, IReturnType resolvedType)
{
// now add the extension method if it fits the type
if (MemberLookupHelper.IsApplicable(resolvedType, ext.Parameters[0].ReturnType, ext as IMethod)) {
@ -139,7 +139,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -139,7 +139,7 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
}
res.Add(ext);
methodFound(ext);
}
}
@ -214,13 +214,13 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -214,13 +214,13 @@ namespace ICSharpCode.SharpDevelop.Dom
return primaryResult.GetDefinitionPosition();
}
public override ArrayList GetCompletionData(IProjectContent projectContent)
public override List<ICompletionEntry> GetCompletionData(IProjectContent projectContent)
{
ArrayList result = primaryResult.GetCompletionData(projectContent);
ArrayList result2 = secondaryResult.GetCompletionData(projectContent);
List<ICompletionEntry> result = primaryResult.GetCompletionData(projectContent);
List<ICompletionEntry> result2 = secondaryResult.GetCompletionData(projectContent);
if (result == null) return result2;
if (result2 == null) return result;
foreach (object o in result2) {
foreach (ICompletionEntry o in result2) {
if (!result.Contains(o))
result.Add(o);
}
@ -365,7 +365,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -365,7 +365,7 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
public override ArrayList GetCompletionData(IProjectContent projectContent)
public override List<ICompletionEntry> GetCompletionData(IProjectContent projectContent)
{
return projectContent.GetNamespaceContents(name);
}
@ -390,7 +390,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -390,7 +390,7 @@ namespace ICSharpCode.SharpDevelop.Dom
{
}
public override ArrayList GetCompletionData(IProjectContent projectContent)
public override List<ICompletionEntry> GetCompletionData(IProjectContent projectContent)
{
return null;
}
@ -450,9 +450,9 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -450,9 +450,9 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
public override ArrayList GetCompletionData(IProjectContent projectContent)
public override List<ICompletionEntry> GetCompletionData(IProjectContent projectContent)
{
ArrayList ar = GetCompletionData(projectContent.Language, true);
List<ICompletionEntry> ar = GetCompletionData(projectContent.Language, true);
if (resolvedClass != null) {
ar.AddRange(resolvedClass.GetCompoundClass().GetAccessibleTypes(CallingClass));
}
@ -798,9 +798,9 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -798,9 +798,9 @@ namespace ICSharpCode.SharpDevelop.Dom
{
}
public override ArrayList GetCompletionData(IProjectContent projectContent)
public override List<ICompletionEntry> GetCompletionData(IProjectContent projectContent)
{
ArrayList res = base.GetCompletionData(projectContent);
List<ICompletionEntry> res = base.GetCompletionData(projectContent);
foreach (IMethod m in this.ResolvedType.GetMethods()) {
if (m.IsConstructor && !m.IsStatic && m.IsAccessible(this.CallingClass, true))
res.Add(m);
@ -827,10 +827,10 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -827,10 +827,10 @@ namespace ICSharpCode.SharpDevelop.Dom
{
}
public override ArrayList GetCompletionData(IProjectContent projectContent)
public override List<ICompletionEntry> GetCompletionData(IProjectContent projectContent)
{
if (this.ResolvedType == null) return null;
ArrayList res = new ArrayList();
List<ICompletionEntry> res = new List<ICompletionEntry>();
foreach (IMember m in MemberLookupHelper.GetAccessibleMembers(this.ResolvedType, this.CallingClass, projectContent.Language, true)) {
if (projectContent.Language.ShowMember(m, false))
@ -838,7 +838,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -838,7 +838,7 @@ namespace ICSharpCode.SharpDevelop.Dom
}
if (this.CallingClass != null) {
AddExtensions(projectContent.Language, res, this.CallingClass, this.ResolvedType);
AddExtensions(projectContent.Language, res.Add, this.CallingClass, this.ResolvedType);
}
return res;

Loading…
Cancel
Save