| File: Symbols\Attributes\WellKnownAttributeData\PropertyWellKnownAttributeData.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.Immutable; using Microsoft.CodeAnalysis.PooledObjects; namespace Microsoft.CodeAnalysis.CSharp.Symbols { /// <summary> /// Information decoded from well-known custom attributes applied on a property. /// </summary> internal sealed class PropertyWellKnownAttributeData : CommonPropertyWellKnownAttributeData, ISkipLocalsInitAttributeTarget, IMemberNotNullAttributeTarget { private bool _hasDisallowNullAttribute; public bool HasDisallowNullAttribute { get { VerifySealed(expected: true); return _hasDisallowNullAttribute; } set { VerifySealed(expected: false); _hasDisallowNullAttribute = value; SetDataStored(); } } private bool _hasAllowNullAttribute; public bool HasAllowNullAttribute { get { VerifySealed(expected: true); return _hasAllowNullAttribute; } set { VerifySealed(expected: false); _hasAllowNullAttribute = value; SetDataStored(); } } private bool _hasMaybeNullAttribute; public bool HasMaybeNullAttribute { get { VerifySealed(expected: true); return _hasMaybeNullAttribute; } set { VerifySealed(expected: false); _hasMaybeNullAttribute = value; SetDataStored(); } } private bool _hasNotNullAttribute; public bool HasNotNullAttribute { get { VerifySealed(expected: true); return _hasNotNullAttribute; } set { VerifySealed(expected: false); _hasNotNullAttribute = value; SetDataStored(); } } private bool _hasSkipLocalsInitAttribute; public bool HasSkipLocalsInitAttribute { get { VerifySealed(expected: true); return _hasSkipLocalsInitAttribute; } set { VerifySealed(expected: false); _hasSkipLocalsInitAttribute = value; SetDataStored(); } } private bool _hasUnscopedRefAttribute; public bool HasUnscopedRefAttribute { get { VerifySealed(expected: true); return _hasUnscopedRefAttribute; } set { VerifySealed(expected: false); _hasUnscopedRefAttribute = value; SetDataStored(); } } private ImmutableArray<string> _memberNotNullAttributeData = ImmutableArray<string>.Empty; public void AddNotNullMember(string memberName) { VerifySealed(expected: false); _memberNotNullAttributeData = _memberNotNullAttributeData.Add(memberName); SetDataStored(); } public void AddNotNullMember(ArrayBuilder<string> memberNames) { VerifySealed(expected: false); _memberNotNullAttributeData = _memberNotNullAttributeData.AddRange(memberNames); SetDataStored(); } public ImmutableArray<string> NotNullMembers { get { VerifySealed(expected: true); return _memberNotNullAttributeData; } } private ImmutableArray<string> _memberNotNullWhenTrueAttributeData = ImmutableArray<string>.Empty; private ImmutableArray<string> _memberNotNullWhenFalseAttributeData = ImmutableArray<string>.Empty; public void AddNotNullWhenMember(bool sense, string memberName) { VerifySealed(expected: false); if (sense) { _memberNotNullWhenTrueAttributeData = _memberNotNullWhenTrueAttributeData.Add(memberName); } else { _memberNotNullWhenFalseAttributeData = _memberNotNullWhenFalseAttributeData.Add(memberName); } SetDataStored(); } public void AddNotNullWhenMember(bool sense, ArrayBuilder<string> memberNames) { VerifySealed(expected: false); if (sense) { _memberNotNullWhenTrueAttributeData = _memberNotNullWhenTrueAttributeData.AddRange(memberNames); } else { _memberNotNullWhenFalseAttributeData = _memberNotNullWhenFalseAttributeData.AddRange(memberNames); } SetDataStored(); } public ImmutableArray<string> NotNullWhenTrueMembers { get { VerifySealed(expected: true); return _memberNotNullWhenTrueAttributeData; } } public ImmutableArray<string> NotNullWhenFalseMembers { get { VerifySealed(expected: true); return _memberNotNullWhenFalseAttributeData; } } } }