/// <summary> /// Find the symbols for declarations made in source with a matching name. /// </summary> public static async Task <IEnumerable <ISymbol> > FindSourceDeclarationsAsync( Project project, Func <string, bool> predicate, CancellationToken cancellationToken = default(CancellationToken)) { if (project == null) { throw new ArgumentNullException("project"); } if (predicate == null) { throw new ArgumentNullException("predicate"); } cancellationToken.ThrowIfCancellationRequested(); var info = await SymbolTreeInfo.GetInfoForProjectAsync(project, cancellationToken).ConfigureAwait(false); if (info != null && info.HasSymbols(predicate, cancellationToken)) { var compilation = await project.GetCompilationAsync(cancellationToken).ConfigureAwait(false); return(info.Search(compilation.Assembly, predicate, cancellationToken)); } return(SpecializedCollections.EmptyEnumerable <ISymbol>()); }
private static async Task AddDeclarationsAsync(Project project, IAssemblySymbol assembly, string name, bool ignoreCase, List <ISymbol> list, CancellationToken cancellationToken) { var info = await SymbolTreeInfo.GetInfoForProjectAsync(project, cancellationToken).ConfigureAwait(false); if (info != null && info.HasSymbols(name, ignoreCase)) { list.AddRange(info.Find(assembly, name, ignoreCase, cancellationToken)); } }
private static async Task <IEnumerable <ISymbol> > FindSourceDeclarationsAsyncImpl( Project project, string name, bool ignoreCase, CancellationToken cancellationToken) { var info = await SymbolTreeInfo.GetInfoForProjectAsync(project, cancellationToken).ConfigureAwait(false); if (info != null && info.HasSymbols(name, ignoreCase)) { var compilation = await project.GetCompilationAsync(cancellationToken).ConfigureAwait(false); return(info.Find(compilation.Assembly, name, ignoreCase, cancellationToken)); } else { return(SpecializedCollections.EmptyEnumerable <ISymbol>()); } }