diff --git a/src/EditorFeatures/Core/GoToDefinition/GoToDefinitionContext.cs b/src/EditorFeatures/Core/GoToDefinition/GoToDefinitionContext.cs index 40f576903bf650f067e66483966c40a92b85d0eb..f27b2323c5e4d5ae67571f43709782558563b8e7 100644 --- a/src/EditorFeatures/Core/GoToDefinition/GoToDefinitionContext.cs +++ b/src/EditorFeatures/Core/GoToDefinition/GoToDefinitionContext.cs @@ -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> _items = new Dictionary>(); + private readonly MultiDictionary _items = new MultiDictionary(); 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> Items => _items; + public IReadOnlyDictionary> Items => null;// _items; public TextSpan Span { get; set; } + public bool TryGetItems(string key, out IEnumerable items) + { + items = _items[key]; + return items != null; + } + public void AddItem(string key, DefinitionItem item) { lock (_gate) { - if (!_items.ContainsKey(key)) - { - _items[key] = new List(); - } - - _items[key].Add(item); + _items.Add(key, item); } } } diff --git a/src/EditorFeatures/Core/NavigableSymbols/NavigableSymbolService.NavigableSymbolSource.cs b/src/EditorFeatures/Core/NavigableSymbols/NavigableSymbolService.NavigableSymbolSource.cs index 418279a87be0ac297bc3c3e43a872b136096312e..97c134d024cf3731a0f785be3919a36a9e88c8d7 100644 --- a/src/EditorFeatures/Core/NavigableSymbols/NavigableSymbolService.NavigableSymbolSource.cs +++ b/src/EditorFeatures/Core/NavigableSymbols/NavigableSymbolService.NavigableSymbolSource.cs @@ -62,7 +62,7 @@ public async Task 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; }