コード例 #1
0
        private IEnumerable <DocumentSymbol> CreateSymbolsOfEntryDocument(ILocalizableSymbol symbol, Boogie.IToken token, SymbolKind kind)
        {
            var children = symbol.Children.SelectMany(Visit);

            if (!IsPartOfEntryDocument(token))
            {
                return(children);
            }
            var documentSymbol = new DocumentSymbol {
                Name     = symbol.Name,
                Kind     = kind,
                Detail   = symbol.GetDetailText(_cancellationToken),
                Children = children.ToArray()
            };

            if (_symbolTable.TryGetLocationOf(symbol, out var location))
            {
                documentSymbol = documentSymbol with {
                    Range          = location.Declaration,
                    SelectionRange = location.Name
                };
            }
            return(new[] { documentSymbol });
        }
    }
コード例 #2
0
        private IEnumerable <DocumentSymbol> CreateSymbolsOfEntryDocument(ILocalizableSymbol symbol, Boogie.IToken token, SymbolKind kind)
        {
            var children = symbol.Children.SelectMany(Visit);

            if (!IsPartOfEntryDocument(token))
            {
                return(children);
            }
            if (!symbolTable.TryGetLocationOf(symbol, out var location))
            {
                return(Enumerable.Empty <DocumentSymbol>());
            }
            var documentSymbol = new DocumentSymbol {
                Name           = symbol.Name,
                Kind           = kind,
                Children       = children.ToArray(),
                Range          = location.Declaration,
                SelectionRange = location.Name
            };

            return(new[] { documentSymbol });
        }