/// <summary> /// Finds all references to a symbol throughout a solution /// </summary> /// <param name="symbol">The symbol to find references to.</param> /// <param name="solution">The solution to find references within.</param> /// <param name="cancellationToken">A cancellation token.</param> public static async Task <IEnumerable <ReferencedSymbol> > FindReferencesAsync( ISymbol symbol, Solution solution, CancellationToken cancellationToken = default) { var progressCollector = new StreamingProgressCollector(StreamingFindReferencesProgress.Instance); await FindReferencesAsync( SymbolAndProjectId.Create(symbol, projectId: null), solution, progress : progressCollector, documents : null, options : FindReferencesSearchOptions.Default, cancellationToken : cancellationToken).ConfigureAwait(false); return(progressCollector.GetReferencedSymbols()); }
private static async Task <IEnumerable <ReferencedSymbol> > FindReferencesAsync( ISymbol symbol, Solution solution, IFindReferencesProgress progress, IImmutableSet <Document> documents, FindReferencesSearchOptions options, CancellationToken cancellationToken) { progress = progress ?? FindReferencesProgress.Instance; var streamingProgress = new StreamingProgressCollector( new StreamingFindReferencesProgressAdapter(progress)); await FindReferencesAsync( SymbolAndProjectId.Create(symbol, projectId: null), solution, streamingProgress, documents, options, cancellationToken).ConfigureAwait(false); return(streamingProgress.GetReferencedSymbols()); }
internal static async Task <ImmutableArray <ReferencedSymbol> > FindRenamableReferencesAsync( SymbolAndProjectId symbolAndProjectId, Solution solution, CancellationToken cancellationToken) { using (Logger.LogBlock(FunctionId.FindReference_Rename, cancellationToken)) { var streamingProgress = new StreamingProgressCollector( StreamingFindReferencesProgress.Instance); IImmutableSet <Document> documents = null; var engine = new FindReferencesSearchEngine( solution, documents, ReferenceFinders.DefaultRenameReferenceFinders, streamingProgress, FindReferencesSearchOptions.Default, cancellationToken); await engine.FindReferencesAsync(symbolAndProjectId).ConfigureAwait(false); return(streamingProgress.GetReferencedSymbols()); } }