Пример #1
0
        public static async Task <ImmutableArray <ISymbol> > GetRecommendedSymbolsAtPositionAsync(
            Document document,
            int position,
            OptionSet?options = null,
            CancellationToken cancellationToken = default)
        {
            var solution      = document.Project.Solution;
            var semanticModel = await document.GetRequiredSemanticModelAsync(cancellationToken).ConfigureAwait(false);

            options ??= solution.Options;
            var context             = document.GetRequiredLanguageService <ISyntaxContextService>().CreateContext(document, semanticModel, position, cancellationToken);
            var languageRecommender = document.GetRequiredLanguageService <IRecommendationService>();

            return(languageRecommender.GetRecommendedSymbolsInContext(context, RecommendationServiceOptions.From(options, document.Project.Language), cancellationToken).NamedSymbols);
        }
Пример #2
0
        public static IEnumerable <ISymbol> GetRecommendedSymbolsAtPosition(
            SemanticModel semanticModel,
            int position,
            Workspace workspace,
            OptionSet?options = null,
            CancellationToken cancellationToken = default)
        {
            var solution = workspace.CurrentSolution;

            options ??= solution.Options;
            var document = solution.GetRequiredDocument(semanticModel.SyntaxTree);
            var context  = document.GetRequiredLanguageService <ISyntaxContextService>().CreateContext(document, semanticModel, position, cancellationToken);

            var languageRecommender = document.GetRequiredLanguageService <IRecommendationService>();

            return(languageRecommender.GetRecommendedSymbolsInContext(context, RecommendationServiceOptions.From(options, document.Project.Language), cancellationToken).NamedSymbols);
        }
        public RecommendedSymbols GetRecommendedSymbolsAtPosition(Document document, SemanticModel semanticModel, int position, RecommendationServiceOptions options, CancellationToken cancellationToken)
        {
            var context = CreateContext(document, semanticModel, position, cancellationToken);
            var result  = CreateRunner(context, options.FilterOutOfScopeLocals, cancellationToken).GetRecommendedSymbols();

            var namedSymbols   = result.NamedSymbols;
            var unnamedSymbols = result.UnnamedSymbols;

            namedSymbols   = namedSymbols.FilterToVisibleAndBrowsableSymbols(options.HideAdvancedMembers, semanticModel.Compilation);
            unnamedSymbols = unnamedSymbols.FilterToVisibleAndBrowsableSymbols(options.HideAdvancedMembers, semanticModel.Compilation);

            var shouldIncludeSymbolContext = new ShouldIncludeSymbolContext(context, cancellationToken);

            namedSymbols   = namedSymbols.WhereAsArray(shouldIncludeSymbolContext.ShouldIncludeSymbol);
            unnamedSymbols = unnamedSymbols.WhereAsArray(shouldIncludeSymbolContext.ShouldIncludeSymbol);

            return(new RecommendedSymbols(namedSymbols, unnamedSymbols));
        }
Пример #4
0
        public RecommendedSymbols GetRecommendedSymbolsInContext(SyntaxContext syntaxContext, RecommendationServiceOptions options, CancellationToken cancellationToken)
        {
            var semanticModel = syntaxContext.SemanticModel;
            var result        = CreateRunner((TSyntaxContext)syntaxContext, options.FilterOutOfScopeLocals, cancellationToken).GetRecommendedSymbols();

            var namedSymbols   = result.NamedSymbols;
            var unnamedSymbols = result.UnnamedSymbols;

            namedSymbols   = namedSymbols.FilterToVisibleAndBrowsableSymbols(options.HideAdvancedMembers, semanticModel.Compilation);
            unnamedSymbols = unnamedSymbols.FilterToVisibleAndBrowsableSymbols(options.HideAdvancedMembers, semanticModel.Compilation);

            var shouldIncludeSymbolContext = new ShouldIncludeSymbolContext(syntaxContext, cancellationToken);

            namedSymbols   = namedSymbols.WhereAsArray(shouldIncludeSymbolContext.ShouldIncludeSymbol);
            unnamedSymbols = unnamedSymbols.WhereAsArray(shouldIncludeSymbolContext.ShouldIncludeSymbol);

            return(new RecommendedSymbols(namedSymbols, unnamedSymbols));
        }