public async Task FindAsync( ProjectState state, HashSet <Checksum> searchingChecksumsLeft, Dictionary <Checksum, object> result, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); // verify input Contract.ThrowIfFalse(state.TryGetStateChecksums(out var stateChecksum)); Contract.ThrowIfFalse(this == stateChecksum); if (searchingChecksumsLeft.Remove(Checksum)) { result[Checksum] = this; } if (searchingChecksumsLeft.Remove(Info)) { result[Info] = state.ProjectInfo.Attributes; } if (searchingChecksumsLeft.Remove(CompilationOptions)) { result[CompilationOptions] = state.CompilationOptions; } if (searchingChecksumsLeft.Remove(ParseOptions)) { result[ParseOptions] = state.ParseOptions; } if (searchingChecksumsLeft.Remove(Documents.Checksum)) { result[Documents.Checksum] = Documents; } if (searchingChecksumsLeft.Remove(ProjectReferences.Checksum)) { result[ProjectReferences.Checksum] = ProjectReferences; } if (searchingChecksumsLeft.Remove(MetadataReferences.Checksum)) { result[MetadataReferences.Checksum] = MetadataReferences; } if (searchingChecksumsLeft.Remove(AnalyzerReferences.Checksum)) { result[AnalyzerReferences.Checksum] = AnalyzerReferences; } if (searchingChecksumsLeft.Remove(AdditionalDocuments.Checksum)) { result[AdditionalDocuments.Checksum] = AdditionalDocuments; } if (searchingChecksumsLeft.Remove(AnalyzerConfigDocuments.Checksum)) { result[AnalyzerConfigDocuments.Checksum] = AnalyzerConfigDocuments; } ChecksumCollection.Find(state.ProjectReferences, ProjectReferences, searchingChecksumsLeft, result, cancellationToken); ChecksumCollection.Find(state.MetadataReferences, MetadataReferences, searchingChecksumsLeft, result, cancellationToken); ChecksumCollection.Find(state.AnalyzerReferences, AnalyzerReferences, searchingChecksumsLeft, result, cancellationToken); await ChecksumCollection.FindAsync(state.DocumentStates, searchingChecksumsLeft, result, cancellationToken).ConfigureAwait(false); await ChecksumCollection.FindAsync(state.AdditionalDocumentStates, searchingChecksumsLeft, result, cancellationToken).ConfigureAwait(false); await ChecksumCollection.FindAsync(state.AnalyzerConfigDocumentStates, searchingChecksumsLeft, result, cancellationToken).ConfigureAwait(false); }
public async Task FindAsync( ProjectState state, HashSet <Checksum> searchingChecksumsLeft, Dictionary <Checksum, object> result, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); // verify input Contract.ThrowIfFalse(state.TryGetStateChecksums(out var stateChecksum)); Contract.ThrowIfFalse(this == stateChecksum); if (searchingChecksumsLeft.Count == 0) { return; } if (searchingChecksumsLeft.Remove(Checksum)) { result[Checksum] = this; } if (searchingChecksumsLeft.Remove(Info)) { result[Info] = state.ProjectInfo.Attributes; } if (searchingChecksumsLeft.Remove(CompilationOptions)) { Contract.ThrowIfNull(state.CompilationOptions, "We should not be trying to serialize a project with no compilation options; RemoteSupportedLanguages.IsSupported should have filtered it out."); result[CompilationOptions] = state.CompilationOptions; } if (searchingChecksumsLeft.Remove(ParseOptions)) { Contract.ThrowIfNull(state.ParseOptions, "We should not be trying to serialize a project with no compilation options; RemoteSupportedLanguages.IsSupported should have filtered it out."); result[ParseOptions] = state.ParseOptions; } if (searchingChecksumsLeft.Remove(Documents.Checksum)) { result[Documents.Checksum] = Documents; } if (searchingChecksumsLeft.Remove(ProjectReferences.Checksum)) { result[ProjectReferences.Checksum] = ProjectReferences; } if (searchingChecksumsLeft.Remove(MetadataReferences.Checksum)) { result[MetadataReferences.Checksum] = MetadataReferences; } if (searchingChecksumsLeft.Remove(AnalyzerReferences.Checksum)) { result[AnalyzerReferences.Checksum] = AnalyzerReferences; } if (searchingChecksumsLeft.Remove(AdditionalDocuments.Checksum)) { result[AdditionalDocuments.Checksum] = AdditionalDocuments; } if (searchingChecksumsLeft.Remove(AnalyzerConfigDocuments.Checksum)) { result[AnalyzerConfigDocuments.Checksum] = AnalyzerConfigDocuments; } ChecksumCollection.Find(state.ProjectReferences, ProjectReferences, searchingChecksumsLeft, result, cancellationToken); ChecksumCollection.Find(state.MetadataReferences, MetadataReferences, searchingChecksumsLeft, result, cancellationToken); ChecksumCollection.Find(state.AnalyzerReferences, AnalyzerReferences, searchingChecksumsLeft, result, cancellationToken); await ChecksumCollection.FindAsync(state.DocumentStates, searchingChecksumsLeft, result, cancellationToken).ConfigureAwait(false); await ChecksumCollection.FindAsync(state.AdditionalDocumentStates, searchingChecksumsLeft, result, cancellationToken).ConfigureAwait(false); await ChecksumCollection.FindAsync(state.AnalyzerConfigDocumentStates, searchingChecksumsLeft, result, cancellationToken).ConfigureAwait(false); }