internal static async Task <RenameLocations> RehydrateAsync(Solution solution, SerializableRenameLocations locations, CancellationToken cancellationToken) { if (locations == null) { return(null); } var symbol = await locations.Symbol.TryRehydrateAsync(solution, cancellationToken).ConfigureAwait(false); if (symbol == null) { return(null); } ImmutableArray <SearchResult> overloadsResult = default; ImmutableArray <RenameLocation> stringsResult = default; ImmutableArray <RenameLocation> commentsResult = default; if (locations.OverloadsResult != null) { using var _ = ArrayBuilder <SearchResult> .GetInstance(locations.OverloadsResult.Length, out var builder); foreach (var res in locations.OverloadsResult) { builder.Add(await res.RehydrateAsync(solution, cancellationToken).ConfigureAwait(false)); } overloadsResult = builder.ToImmutable(); } if (locations.StringsResult != null) { using var _ = ArrayBuilder <RenameLocation> .GetInstance(locations.StringsResult.Length, out var builder); foreach (var res in locations.StringsResult) { builder.Add(await res.RehydrateAsync(solution, cancellationToken).ConfigureAwait(false)); } stringsResult = builder.ToImmutable(); } if (locations.CommentsResult != null) { using var _ = ArrayBuilder <RenameLocation> .GetInstance(locations.CommentsResult.Length, out var builder); foreach (var res in locations.CommentsResult) { builder.Add(await res.RehydrateAsync(solution, cancellationToken).ConfigureAwait(false)); } commentsResult = builder.ToImmutable(); } return(new RenameLocations( symbol, solution, locations.Options.Rehydrate(), await locations.OriginalSymbolResult.RehydrateAsync(solution, cancellationToken).ConfigureAwait(false), await locations.MergedResult.RehydrateAsync(solution, cancellationToken).ConfigureAwait(false), overloadsResult, stringsResult, commentsResult)); }
internal static async Task <RenameLocations?> TryRehydrateAsync(Solution solution, SerializableRenameLocations locations, CancellationToken cancellationToken) { if (locations == null) { return(null); } if (locations.Symbol == null) { return(null); } var symbol = await locations.Symbol.TryRehydrateAsync(solution, cancellationToken).ConfigureAwait(false); if (symbol == null) { return(null); } Contract.ThrowIfNull(locations.Result); return(new RenameLocations( symbol, solution, locations.Options.Rehydrate(), await locations.Result.RehydrateAsync(solution, cancellationToken).ConfigureAwait(false))); }