public async Task <ICallHierarchyMemberItem> CreateItem(ISymbol symbol, Project project, IEnumerable <Location> callsites, CancellationToken cancellationToken) { if (symbol.Kind == SymbolKind.Method || symbol.Kind == SymbolKind.Property || symbol.Kind == SymbolKind.Event || symbol.Kind == SymbolKind.Field) { symbol = GetTargetSymbol(symbol); var finders = await CreateFinders(symbol, project, cancellationToken).ConfigureAwait(false); ICallHierarchyMemberItem item = new CallHierarchyItem(symbol, project.Id, finders, () => symbol.GetGlyph().GetImageSource(GlyphService), this, callsites, project.Solution.Workspace); return(item); } return(null); }
public async Task<ICallHierarchyMemberItem> CreateItem(ISymbol symbol, Project project, IEnumerable<Location> callsites, CancellationToken cancellationToken) { if (symbol.Kind == SymbolKind.Method || symbol.Kind == SymbolKind.Property || symbol.Kind == SymbolKind.Event || symbol.Kind == SymbolKind.Field) { symbol = GetTargetSymbol(symbol); var finders = await CreateFinders(symbol, project, cancellationToken).ConfigureAwait(false); ICallHierarchyMemberItem item = new CallHierarchyItem(symbol, project.Id, finders, () => symbol.GetGlyph().GetImageSource(GlyphService), this, callsites, project.Solution.Workspace); return item; } return null; }
public void PresentRoot(CallHierarchyItem root) { var callHierarchy = _serviceProvider.GetService(typeof(SCallHierarchy)) as ICallHierarchy; callHierarchy.ShowToolWindow(); callHierarchy.AddRootItem((ICallHierarchyMemberItem)root); }
public void PresentRoot(CallHierarchyItem root) { this.PresentedRoot = root; }
internal void Navigate(CallHierarchyItem root, string searchCategory, string callSite, CallHierarchySearchScope scope = CallHierarchySearchScope.EntireSolution, IImmutableSet<Document> documents = null) { CallHierarchyItem item = null; this.SearchRoot(root, searchCategory, (CallHierarchyItem c) => item = c, scope, documents); if (callSite == ConvertToName(item)) { var detail = item.Details.FirstOrDefault(); if (detail != null) { detail.NavigateTo(); } else { item.NavigateTo(); } } }
internal void VerifyResult(CallHierarchyItem root, string searchCategory, string[] expectedCallers, CallHierarchySearchScope scope = CallHierarchySearchScope.EntireSolution, IImmutableSet<Document> documents = null) { this.SearchRoot(root, searchCategory, (CallHierarchyItem c) => { Assert.True(expectedCallers.Any()); Assert.True(expectedCallers.Contains(ConvertToName(c))); }, scope, documents); }
internal void VerifyRoot(CallHierarchyItem root, string name = "", string[] expectedCategories = null) { Assert.Equal(name, ConvertToName(root)); if (expectedCategories != null) { var categories = root.SupportedSearchCategories.Select(s => s.DisplayName); foreach (var category in expectedCategories) { Assert.Contains(category, categories); } } }
internal void SearchRoot(CallHierarchyItem root, string displayName, Action<ICallHierarchyNameItem> verify, CallHierarchySearchScope scope, IImmutableSet<Document> documents = null) { var callback = new MockSearchCallback(verify); var category = root.SupportedSearchCategories.First(c => c.DisplayName == displayName).Name; if (documents != null) { root.StartSearchWithDocuments(category, scope, callback, documents); } else { root.StartSearch(category, scope, callback); } callback.WaitForCompletion(); }