private async Task <bool> ComputeHasSuccessfullyLoadedTransitivelyAsync(Solution solution, bool hasSuccessfullyLoaded, CancellationToken cancellationToken) { if (!hasSuccessfullyLoaded) { return(false); } foreach (var projectReference in this.ProjectState.ProjectReferences) { var project = solution.GetProject(projectReference.ProjectId); if (project == null) { return(false); } if (!await solution.HasSuccessfullyLoadedAsync(project, cancellationToken).ConfigureAwait(false)) { return(false); } } return(true); }
/// <summary> /// Determines if the compilation returned by <see cref="GetCompilationAsync"/> and all its referenced compilaton are from fully loaded projects. /// </summary> // TODO: make this public internal Task <bool> HasSuccessfullyLoadedAsync(CancellationToken cancellationToken = default(CancellationToken)) { return(_solution.HasSuccessfullyLoadedAsync(this, cancellationToken)); }
private async Task<bool> ComputeHasSuccessfullyLoadedTransitivelyAsync(Solution solution, bool hasSuccessfullyLoaded, CancellationToken cancellationToken) { if (!hasSuccessfullyLoaded) { return false; } foreach (var projectReference in this.ProjectState.ProjectReferences) { var project = solution.GetProject(projectReference.ProjectId); if (project == null) { return false; } if (!await solution.HasSuccessfullyLoadedAsync(project, cancellationToken).ConfigureAwait(false)) { return false; } } return true; }