|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.Collections.Immutable;
using System.Threading;
using System.Threading.Tasks;
namespace Microsoft.CodeAnalysis.NavigateTo
{
internal abstract partial class AbstractNavigateToSearchService : INavigateToSearchService
{
public IImmutableSet<string> KindsProvided { get; } = ImmutableHashSet.Create(
NavigateToItemKind.Class,
NavigateToItemKind.Constant,
NavigateToItemKind.Delegate,
NavigateToItemKind.Enum,
NavigateToItemKind.EnumItem,
NavigateToItemKind.Event,
NavigateToItemKind.Field,
NavigateToItemKind.Interface,
NavigateToItemKind.Method,
NavigateToItemKind.Module,
NavigateToItemKind.Property,
NavigateToItemKind.Structure);
public bool CanFilter => true;
private static Func<RoslynNavigateToItem, Task> GetOnItemFoundCallback(
Solution solution, Document? activeDocument, Func<INavigateToSearchResult, Task> onResultFound, CancellationToken cancellationToken)
{
return async item =>
{
var result = await item.TryCreateSearchResultAsync(solution, activeDocument, cancellationToken).ConfigureAwait(false);
if (result != null)
await onResultFound(result).ConfigureAwait(false);
};
}
}
}
|