提交 e5245498 编写于 作者: R Ravi Chande

Use Multidictionary

上级 064d3ebe
......@@ -4,6 +4,7 @@
using System.Threading;
using Microsoft.CodeAnalysis.FindUsages;
using Microsoft.CodeAnalysis.Text;
using Roslyn.Utilities;
namespace Microsoft.CodeAnalysis.Editor.GoToDefinition
{
......@@ -11,7 +12,7 @@ internal class GoToDefinitionContext
{
private readonly object _gate = new object();
private readonly Dictionary<string, List<DefinitionItem>> _items = new Dictionary<string, List<DefinitionItem>>();
private readonly MultiDictionary<string, DefinitionItem> _items = new MultiDictionary<string, DefinitionItem>();
public GoToDefinitionContext(Document document, int position, CancellationToken cancellationToken)
{
......@@ -24,19 +25,20 @@ public GoToDefinitionContext(Document document, int position, CancellationToken
public int Position { get; }
public CancellationToken CancellationToken { get; }
public IReadOnlyDictionary<string, List<DefinitionItem>> Items => _items;
public IReadOnlyDictionary<string, List<DefinitionItem>> Items => null;// _items;
public TextSpan Span { get; set; }
public bool TryGetItems(string key, out IEnumerable<DefinitionItem> items)
{
items = _items[key];
return items != null;
}
public void AddItem(string key, DefinitionItem item)
{
lock (_gate)
{
if (!_items.ContainsKey(key))
{
_items[key] = new List<DefinitionItem>();
}
_items[key].Add(item);
_items.Add(key, item);
}
}
}
......
......@@ -62,7 +62,7 @@ public async Task<INavigableSymbol> GetNavigableSymbolAsync(SnapshotSpan trigger
await service.GetDefinitionsAsync(context).ConfigureAwait(false);
if (!context.Items.TryGetValue(WellKnownDefinitionTypes.Definition, out var definitions))
if (!context.TryGetItems(WellKnownDefinitionTypes.Definition, out var definitions))
{
return null;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册