protected internal override VirtualTreePoint?GetSymbolItemNavigationPoint(Document document, NavigationBarSymbolItem item, CancellationToken cancellationToken) { var compilation = document.Project.GetCompilationAsync(cancellationToken).WaitAndGetResult(cancellationToken); var symbols = item.NavigationSymbolId.Resolve(compilation, cancellationToken: cancellationToken); var symbol = symbols.Symbol; if (symbol == null) { if (item.NavigationSymbolIndex < symbols.CandidateSymbols.Length) { symbol = symbols.CandidateSymbols[item.NavigationSymbolIndex.Value]; } else { return(null); } } var syntaxTree = document.GetSyntaxTreeSynchronously(cancellationToken); var location = symbol.Locations.FirstOrDefault(l => l.SourceTree.Equals(syntaxTree)); if (location == null) { location = symbol.Locations.FirstOrDefault(); } if (location == null) { return(null); } return(new VirtualTreePoint(location.SourceTree, location.SourceTree.GetText(cancellationToken), location.SourceSpan.Start)); }
protected internal override VirtualTreePoint?GetSymbolItemNavigationPoint(Document document, NavigationBarSymbolItem item, CancellationToken cancellationToken) { throw new NotImplementedException(); }