| File: NavigateTo\INavigateToSearchResult.cs | Web Access |
| Project: src\roslyn\src\Features\Core\Portable\Microsoft.CodeAnalysis.Features.csproj (Microsoft.CodeAnalysis.Features) |
// 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.Collections.Immutable; using Microsoft.CodeAnalysis.Navigation; using Microsoft.CodeAnalysis.PatternMatching; using Microsoft.CodeAnalysis.Text; namespace Microsoft.CodeAnalysis.NavigateTo; internal interface INavigateToSearchResult { string AdditionalInformation { get; } string Kind { get; } NavigateToMatchKind MatchKind { get; } bool IsCaseSensitive { get; } string Name { get; } ImmutableArray<TextSpan> NameMatchSpans { get; } string SecondarySort { get; } string? Summary { get; } INavigableItem NavigableItem { get; } ImmutableArray<PatternMatch> Matches { get; } } internal static class NavigateToSearchResultHelpers { /// <summary> /// Helper to bridge from old api that only returned one pattern match, to new API which can return many. /// </summary> public static ImmutableArray<PatternMatch> GetMatches(INavigateToSearchResult result) { var patternMatch = new PatternMatch( GetPatternMatchKind(result.MatchKind), punctuationStripped: false, result.IsCaseSensitive, result.NameMatchSpans); return [patternMatch]; } private static PatternMatchKind GetPatternMatchKind(NavigateToMatchKind matchKind) => matchKind switch { NavigateToMatchKind.Exact => PatternMatchKind.Exact, NavigateToMatchKind.Prefix => PatternMatchKind.Prefix, NavigateToMatchKind.Substring => PatternMatchKind.NonLowercaseSubstring, NavigateToMatchKind.Regular => PatternMatchKind.Fuzzy, NavigateToMatchKind.None => PatternMatchKind.Fuzzy, NavigateToMatchKind.CamelCaseExact => PatternMatchKind.CamelCaseExact, NavigateToMatchKind.CamelCasePrefix => PatternMatchKind.CamelCasePrefix, NavigateToMatchKind.CamelCaseNonContiguousPrefix => PatternMatchKind.CamelCaseNonContiguousPrefix, NavigateToMatchKind.CamelCaseSubstring => PatternMatchKind.CamelCaseSubstring, NavigateToMatchKind.CamelCaseNonContiguousSubstring => PatternMatchKind.CamelCaseNonContiguousSubstring, NavigateToMatchKind.Fuzzy => PatternMatchKind.Fuzzy, _ => throw ExceptionUtilities.UnexpectedValue(matchKind), }; }