internal async Task <IEnumerable <CompletionItem> > GetItemsAsync() { // modifiers* override modifiers* type? | if (!TryCheckForTrailingTokens(_position)) { return(null); } var startToken = _provider.FindStartingToken(_syntaxTree, _position, _cancellationToken); if (startToken.Parent == null) { return(null); } var semanticModel = await _document.ReuseExistingSpeculativeModelAsync(startToken.Parent, _cancellationToken).ConfigureAwait(false); if (!_provider.TryDetermineReturnType(startToken, semanticModel, _cancellationToken, out var returnType, out var tokenAfterReturnType) || !_provider.TryDetermineModifiers(tokenAfterReturnType, _text, _startLineNumber, out var seenAccessibility, out var modifiers) || !TryDetermineOverridableMembers(semanticModel, startToken, seenAccessibility, out var overridableMembers)) { return(null); } overridableMembers = _provider.FilterOverrides(overridableMembers, returnType); var resolvableMembers = overridableMembers.Where(m => CanResolveSymbolKey(m, semanticModel.Compilation)); return(overridableMembers.Select(m => CreateItem( m, semanticModel, startToken, modifiers)).ToList()); }
internal async Task <IEnumerable <CompletionItem> > GetItemsAsync() { // modifiers* override modifiers* type? | if (!TryCheckForTrailingTokens(_position)) { return(null); } var startToken = _provider.FindStartingToken(_syntaxTree, _position, _cancellationToken); if (startToken.Parent == null) { return(null); } var semanticModel = await _document.GetSemanticModelForNodeAsync(startToken.Parent, _cancellationToken).ConfigureAwait(false); ITypeSymbol returnType; DeclarationModifiers modifiers; Accessibility seenAccessibility; SyntaxToken tokenAfterReturnType; ISet <ISymbol> overridableMembers; if (!_provider.TryDetermineReturnType(startToken, semanticModel, _cancellationToken, out returnType, out tokenAfterReturnType) || !_provider.TryDetermineModifiers(tokenAfterReturnType, _text, _startLineNumber, out seenAccessibility, out modifiers) || !TryDetermineOverridableMembers(semanticModel, startToken, seenAccessibility, out overridableMembers)) { return(null); } overridableMembers = _provider.FilterOverrides(overridableMembers, returnType); var symbolDisplayService = _document.GetLanguageService <ISymbolDisplayService>(); return(overridableMembers.Select(m => CreateItem( m, _span, symbolDisplayService, semanticModel, startToken, modifiers)).ToList()); }