internal static async Task <Solution> RenameAsync( RenameLocations locations, string newName, Func <Location, bool> filter = null, Func <IEnumerable <ISymbol>, bool?> hasConflict = null, CancellationToken cancellationToken = default) { if (string.IsNullOrEmpty(newName)) { throw new ArgumentException(nameof(newName)); } cancellationToken.ThrowIfCancellationRequested(); var symbolAndProjectId = locations.SymbolAndProjectId; if (filter != null) { locations = new RenameLocations( locations.Locations.Where(loc => filter(loc.Location)).ToSet(), symbolAndProjectId, locations.Solution, locations.ReferencedSymbols, locations.ImplicitLocations.Where(loc => filter(loc.Location)), locations.Options); } var conflictResolution = await ConflictResolver.ResolveConflictsAsync( locations, symbolAndProjectId.Symbol.Name, newName, locations.Options, hasConflict, cancellationToken).ConfigureAwait(false); return(conflictResolution.NewSolution); }
/// <summary> /// Find the locations that need to be renamed. /// </summary> internal static async Task <RenameLocations> FindAsync( SymbolAndProjectId symbolAndProjectId, Solution solution, OptionSet optionSet, CancellationToken cancellationToken) { Contract.ThrowIfNull(symbolAndProjectId.Symbol); using (Logger.LogBlock(FunctionId.Rename_AllRenameLocations, cancellationToken)) { symbolAndProjectId = await ReferenceProcessing.FindDefinitionSymbolAsync(symbolAndProjectId, solution, cancellationToken).ConfigureAwait(false); var originalSymbolResult = await AddLocationsReferenceSymbolsAsync(symbolAndProjectId, solution, cancellationToken).ConfigureAwait(false); var intermediateResult = new RenameLocations(symbolAndProjectId, solution, optionSet, originalSymbolResult, overloadsResult: null, stringsResult: null, commentsResult: null); return(await intermediateResult.FindWithUpdatedOptionsAsync(optionSet, cancellationToken).ConfigureAwait(false)); } }
internal static Task <RenameLocations> GetRenameLocationsAsync( Solution solution, SymbolAndProjectId symbolAndProjectId, OptionSet options, CancellationToken cancellationToken) { if (solution == null) { throw new ArgumentNullException(nameof(solution)); } if (symbolAndProjectId.Symbol == null) { throw new ArgumentNullException(nameof(symbolAndProjectId)); } cancellationToken.ThrowIfCancellationRequested(); options = options ?? solution.Options; return(RenameLocations.FindAsync( symbolAndProjectId, solution, options, cancellationToken)); }