| File: Symbols\Attributes\WellKnownAttributeData\TypeWellKnownEarlyAttributeData.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. using System.Diagnostics; namespace Microsoft.CodeAnalysis.CSharp.Symbols { internal sealed class CollectionBuilderAttributeData { public static readonly CollectionBuilderAttributeData Uninitialized = new CollectionBuilderAttributeData(null, null); public CollectionBuilderAttributeData(TypeSymbol? builderType, string? methodName) { BuilderType = builderType; MethodName = methodName; } public readonly TypeSymbol? BuilderType; public readonly string? MethodName; } /// <summary> /// Information decoded early from well-known custom attributes applied on a type. /// </summary> internal sealed class TypeEarlyWellKnownAttributeData : CommonTypeEarlyWellKnownAttributeData { #region InterpolatedStringHandlerAttribute private bool _hasInterpolatedStringHandlerAttribute; public bool HasInterpolatedStringHandlerAttribute { get { VerifySealed(expected: true); return _hasInterpolatedStringHandlerAttribute; } set { VerifySealed(expected: false); _hasInterpolatedStringHandlerAttribute = value; SetDataStored(); } } #endregion #region InlineArrayAttribute private int _inlineArrayLength; public int InlineArrayLength { get { VerifySealed(expected: true); return _inlineArrayLength; } set { VerifySealed(expected: false); Debug.Assert(value is -1 or > 0); if (_inlineArrayLength == 0) { _inlineArrayLength = value; } SetDataStored(); } } #endregion #region CollectionBuilderAttribute private CollectionBuilderAttributeData? _collectionBuilder; public CollectionBuilderAttributeData? CollectionBuilder { get { VerifySealed(expected: true); return _collectionBuilder; } set { VerifySealed(expected: false); _collectionBuilder ??= value; SetDataStored(); } } #endregion #region UnionAttribute private bool _hasUnionAttribute; public bool HasUnionAttribute { get { VerifySealed(expected: true); return _hasUnionAttribute; } set { VerifySealed(expected: false); _hasUnionAttribute = value; SetDataStored(); } } #endregion } }