| File: Binder\ConstantFieldsInProgress.cs | Web Access |
| Project: src\roslyn\src\Compilers\CSharp\Portable\Microsoft.CodeAnalysis.CSharp.csproj (Microsoft.CodeAnalysis.CSharp) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. #nullable disable using System.Collections.Generic; using Microsoft.CodeAnalysis.CSharp.Symbols; using Roslyn.Utilities; namespace Microsoft.CodeAnalysis.CSharp { /// <summary> /// This is used while computing the values of constant fields. Since they can depend on each /// other, we need to keep track of which ones we are currently computing in order to avoid (and /// report) cycles. /// </summary> internal sealed class ConstantFieldsInProgress { private readonly SourceFieldSymbol _fieldOpt; private readonly HashSet<SourceFieldSymbolWithSyntaxReference> _dependencies; internal static readonly ConstantFieldsInProgress Empty = new ConstantFieldsInProgress(null, null); internal ConstantFieldsInProgress( SourceFieldSymbol fieldOpt, HashSet<SourceFieldSymbolWithSyntaxReference> dependencies) { _fieldOpt = fieldOpt; _dependencies = dependencies; } public bool IsEmpty { get { return (object)_fieldOpt == null; } } internal void AddDependency(SourceFieldSymbolWithSyntaxReference field) { _dependencies.Add(field); } } }