コード例 #1
0
        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);
        }
コード例 #2
0
        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;
        }
コード例 #3
0
 public void PresentRoot(CallHierarchyItem root)
 {
     var callHierarchy = _serviceProvider.GetService(typeof(SCallHierarchy)) as ICallHierarchy;
     callHierarchy.ShowToolWindow();
     callHierarchy.AddRootItem((ICallHierarchyMemberItem)root);
 }
コード例 #4
0
 public void PresentRoot(CallHierarchyItem root)
 {
     this.PresentedRoot = root;
 }
コード例 #5
0
        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();
                }
            }
        }
コード例 #6
0
 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);
 }
コード例 #7
0
        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);
                }
            }
        }
コード例 #8
0
        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();
        }