public Task <SerializableConflictResolution?> RenameSymbolAsync( PinnedSolutionInfo solutionInfo, SerializableSymbolAndProjectId symbolAndProjectId, string newName, SerializableRenameOptionSet options, SerializableSymbolAndProjectId[] nonConflictSymbolIds, CancellationToken cancellationToken) { return(RunServiceAsync <SerializableConflictResolution?>(async() => { using (UserOperationBooster.Boost()) { var solution = await GetSolutionAsync(solutionInfo, cancellationToken).ConfigureAwait(false); var symbol = await symbolAndProjectId.TryRehydrateAsync( solution, cancellationToken).ConfigureAwait(false); if (symbol == null) { return null; } var nonConflictSymbols = await GetNonConflictSymbolsAsync(solution, nonConflictSymbolIds, cancellationToken).ConfigureAwait(false); var result = await Renamer.RenameSymbolAsync( solution, symbol, newName, options.Rehydrate(), nonConflictSymbols, cancellationToken).ConfigureAwait(false); return await result.DehydrateAsync(cancellationToken).ConfigureAwait(false); } }, cancellationToken)); }
public Task <SerializableRenameLocations?> FindRenameLocationsAsync( PinnedSolutionInfo solutionInfo, SerializableSymbolAndProjectId symbolAndProjectId, SerializableRenameOptionSet options, CancellationToken cancellationToken) { return(RunServiceAsync <SerializableRenameLocations?>(async() => { using (UserOperationBooster.Boost()) { var solution = await GetSolutionAsync(solutionInfo, cancellationToken).ConfigureAwait(false); var symbol = await symbolAndProjectId.TryRehydrateAsync( solution, cancellationToken).ConfigureAwait(false); if (symbol == null) { return null; } var result = await RenameLocations.FindLocationsAsync( symbol, solution, options.Rehydrate(), cancellationToken).ConfigureAwait(false); return result.Dehydrate(solution, cancellationToken); } }, cancellationToken)); }
public async Task FindReferencesAsync(SerializableSymbolAndProjectId symbolAndProjectIdArg, DocumentId[] documentArgs, CancellationToken cancellationToken) { using (UserOperationBooster.Boost()) { var solution = await GetSolutionAsync(cancellationToken).ConfigureAwait(false); var symbolAndProjectId = await symbolAndProjectIdArg.TryRehydrateAsync( solution, cancellationToken).ConfigureAwait(false); var progressCallback = new FindReferencesProgressCallback(this); if (!symbolAndProjectId.HasValue) { await progressCallback.OnStartedAsync().ConfigureAwait(false); await progressCallback.OnCompletedAsync().ConfigureAwait(false); return; } var documents = documentArgs?.Select(solution.GetDocument) .ToImmutableHashSet(); await SymbolFinder.FindReferencesInCurrentProcessAsync( symbolAndProjectId.Value, solution, progressCallback, documents, cancellationToken).ConfigureAwait(false); } }
public Task FindReferencesAsync( PinnedSolutionInfo solutionInfo, SerializableSymbolAndProjectId symbolAndProjectIdArg, DocumentId[] documentArgs, SerializableFindReferencesSearchOptions options, CancellationToken cancellationToken) { return(RunServiceAsync(async() => { using (UserOperationBooster.Boost()) { var solution = await GetSolutionAsync(solutionInfo, cancellationToken).ConfigureAwait(false); var symbolAndProjectId = await symbolAndProjectIdArg.TryRehydrateAsync( solution, cancellationToken).ConfigureAwait(false); var progressCallback = new FindReferencesProgressCallback(EndPoint, cancellationToken); if (!symbolAndProjectId.HasValue) { await progressCallback.OnStartedAsync().ConfigureAwait(false); await progressCallback.OnCompletedAsync().ConfigureAwait(false); return; } // NOTE: In projection scenarios, we might get a set of documents to search // that are not all the same language and might not exist in the OOP process // (like the JS parts of a .cshtml file). Filter them out here. This will // need to be revisited if we someday support FAR between these languages. var documents = documentArgs?.Select(solution.GetDocument) .WhereNotNull() .ToImmutableHashSet(); await SymbolFinder.FindReferencesInCurrentProcessAsync( symbolAndProjectId.Value, solution, progressCallback, documents, options.Rehydrate(), cancellationToken).ConfigureAwait(false); } }, cancellationToken)); }